0

我有一个 Android 应用程序正在处理设备相机。在代码中,onPreviewFrame 函数永远循环,并在每个信号循环中创建一个新的 YuvImage 实例。最后在循环中实例设置为空,因此系统垃圾收集器可以释放分配的内存。

这在 Android 4.1 中完美运行,但在 3.2 中却不行。在 Android 3.2 操作系统中,此应用程序分配的内存越来越多,最终内存不足。

怎么了?

oPreview.oCamera.setPreviewCallbackWithBuffer( new Camera.PreviewCallback() 
{
   public synchronized void onPreviewFrame( byte[] bData, Camera oCamera)
   {
      ...
      YuvImage oYuv_image = new YuvImage( bData, iFormat, iW, iH, null);
      ...
      oYuv_image = null;
   }
}
4

1 回答 1

0

Eclipse 有一个名为“Memory Analizer”的插件。它可以向您显示内存“泄漏”的确切位置以及正在填充您的应用程序直到内存不足的情况。

这是一个教程:http ://www.vogella.com/articles/EclipseMemoryAnalyzer/article.html

我过去使用过它,该插件对我帮助很大。

于 2013-10-16T13:03:24.780 回答