Android new Intent内存泄漏/内存不足
我有一个包含2个活动的应用程序。第一个活动在启动时启动,并使用一个按钮启动第二个活动Android new Intent内存泄漏/内存不足,android,memory-leaks,out-of-memory,android-memory,Android,Memory Leaks,Out Of Memory,Android Memory,我有一个包含2个活动的应用程序。第一个活动在启动时启动,并使用一个按钮启动第二个活动 Intent intent = new Intent(MainActivity.this, com.example.project.SomeActivity.class); startActivityForResult(intent, 0); 在第二个活动中,我有一个摄像头和一些内存分配 当我在第二个活动中按下“关闭”按钮时,我会在摄像机上呼叫“关闭”,并完成活动 m_camera.Close(Cam
Intent intent = new Intent(MainActivity.this, com.example.project.SomeActivity.class);
startActivityForResult(intent, 0);
在第二个活动中,我有一个摄像头和一些内存分配
当我在第二个活动中按下“关闭”按钮时,我会在摄像机上呼叫“关闭”,并完成活动
m_camera.Close(CameraEnum.FRONT.getCameraID());
this.finish();
System.gc();
当我第一次关闭活动并从第一次活动调用它时,一切都很好,第二次也是如此-但当我在第三次打开它时,我在这一行出现内存不足错误:
m_data = new byte[4*width*height];
我得到的错误是:
05-19 14:22:51.440: E/dalvikvm-heap(31838): Out of memory on a 1228816-byte allocation.
...
05-19 14:42:42.174: E/AndroidRuntime(7345): java.lang.OutOfMemoryError
我可以找出为什么会发生这种情况
有什么想法吗
谢谢 好吧,我们发现了问题-这确实是由于持有对“Context”对象的引用而导致的内存泄漏。
发布后-应用程序不再崩溃。m_data=新字节[4*宽度*高度];那可能是很多记忆。您正在管理大位图吗?它是位图的内存。但是为什么它只在第三次运行时才会崩溃呢?你可能有内存泄漏。由于某种原因,引用被保留,无法GC收集。如果我在活动中调用this.finish(),如果看不到代码,就无法查找错误所在-它不会清除所有内存吗?它会完成活动。但是,如果引用被保留,则活动不会从内存中释放。我似乎也会遇到同样的错误。你是怎么发布的?