Android Media Projection内存泄漏?

时间:2017-07-20 14:36:26

标签: android memory-leaks opengl-es android-mediaprojection

我正在开发一个使用Android Media Projection的项目。我在本机代码中看到了相当大的内存泄漏(应用程序jvm内存使用率相当低且稳定)。我已经能够获得本机内存转储,我看到一堆似乎是从opengl分配的4Mb缓冲区。该应用程序不与opengl直接交互(但我相当肯定媒体投影)。如果我们关闭媒体投影,然后再次启动(我们会在停止时释放虚拟显示),我们会获得更多这些4Mb缓冲区,并很快崩溃。

堆转储有很多这些:

z 1  sz  4194304  num   16  bt abab7645 9f562deb 9f5616ec 9f561614 91c8caab ae451985 ae450907 ae44ee05 ae4561c1 ae4548a0 aea5191f abdc3041 ac7bc189 ac7aba69 ac7bce52 ac7bdc51

这些地址映射以下图书馆(但我没有这些图书馆AFAIK的符号)。

/system/lib/libc.so
/system/lib/libOpenglSystemCommon.so
/system/lib/libOpenglSystemCommon.so
/system/lib/libOpenglSystemCommon.so
/system/lib/hw/gralloc.ranchu.so
/system/lib/libui.so
/system/lib/libui.so
/system/lib/libui.so
/system/lib/libui.so
/system/lib/libui.so
/system/lib/libandroid_runtime.so
/system/lib/libbinder.so
/system/lib/libgui.so
/system/lib/libgui.so
/system/lib/libgui.so
/system/lib/libgui.so

编辑: 我已经制作了一个演示问题的示例项目:

https://github.com/johngray1965/MediaProjectorSample

按照自述文件中的说明进行操作。经过几次迭代后,我结束了使用42Mb(其中大多数是9个4Mb缓冲区)。这与媒体投影仪停止了。这适用于做得很少的应用。在现实世界中,除此之外还有额外的内存需求。这仅仅是为了原生用途,并没有考虑到JVM内存的使用。

0 个答案:

没有答案