我正在制作一个基本的Android应用程序,但它遭受了大量垃圾收集(GC每秒开始4-5次)。我试着查找根本原因,并在调用onCreate
函数后意识到我的应用程序几乎没有内存。
应用程序启动后,DDMS显示几乎91%的堆使用,主要是1字节数组。我还运行了内存分析工具,看看我是否在泄漏内存或其他东西,甚至在执行应用程序后,它显示大部分内存已被android.content.res.resources
用尽。
为什么我的应用程序会失去如此多的内存资源?我的应用程序所拥有的唯一资源是22KB的小JPEG图像。我在其他地方读到,由于共享资源等,有时候自由堆被误报了,但是GC不应该像应用程序运行时那样频繁地启动。有人可以帮忙吗?
FWIW,在Galaxy S3上运行的同一个应用程序在开始时显示大约20%的堆使用量,即使它显示相同的总内存量(~10 MB)。有问题的手机是Galaxy S2。
答案 0 :(得分:0)
将手机升级到Cyanogenmod 10.1,现在堆的使用率在开始时约为30%,GC不再启动了。也许是三星固件中的一个错误?