我正在写一个小的单活动Android应用程序,并得到一个内存泄漏错误,因为我找不到原点.
首先,应用程序计算基本内容并以结构化方式显示结果.计算是微不足道的,虽然有一些图像,但它们大约有50个图标,总共少于4MB.

我已经安装了Eclipse Memory Analyzer并检查了它的堆转储,Leak Suspects Report说:

问题疑似1:
477个“byte []”实例,由<系统类加载器>占用78.116.240(76,46%)个字节.

java – Android内存泄漏,EMA可疑:“byte 【】”由“”加载教程
dominator\_tree


我既不知道那些字节数组是什么,也不知道GC根或任何东西,因为数组在支配树中没有父母.我不经常为Android编程,我拼命想弄清楚,从今天起这里发生了什么.当我使用应用程序并观察ADM中使用的堆大小/%时,我直接以80%的使用率开始并随着我的使用而变大. (也显示1字节数组(byte [],boolean []))直到应用程序在AVD上崩溃,我的真实设备可以处理它更长一点.我知道我可以把尺寸做得更大,但这对我来说没有解决方案,因为我认为我从一开始就遇到了这个问题,现在它刚刚达到临界点.

解决方法:

转到直方图视图:直方图视图显示可按实例数排序的类列表,浅堆(所有实例使用的内存总量)或保留堆(所有实例保持活动的内存总量,包括他们引用的其他对象).

右键单击byte []类,然后选择List Objects>有来电参考.这将生成堆中所有字节数组的列表,您可以根据Shallow堆使用情况对其进行排序.

选择一个大对象,然后向下钻取.这将显示从根集到对象的路径 – 保持此对象存活的引用链.在下面的情况下,位图缓存是罪魁祸首

java – Android内存泄漏,EMA可疑:“byte 【】”由“”加载教程

边注
从Android 3.0(Honeycomb)开始,Bitmap对象的像素数据存储在字节数组中(以前它没有存储在Dalvik堆中)

标签: java, android, byte, memory-leaks, arrays

相关文章推荐

添加新评论,含*的栏目为必填