2

我正在制作一个基本的 android 应用程序,但它受到大量垃圾收集的影响(GC 每秒启动 4-5 次)。我试图寻找根本原因,并意识到我的应用程序在onCreate调用该函数后几乎没有内存。

应用程序启动后,DDMS 显示几乎 91% 的堆正在使用,主要是 1 字节数组。我还跑了内存分析工具,看看我是不是内存泄漏什么的,甚至在执行应用程序后,它显示大部分内存已被android.content.res.resources.

为什么我的应用程序会因为资源而丢失这么多内存?我的应用程序拥有的唯一资源是 22KB 的小型 JPEG 图像。我在其他地方读到,有时由于共享资源等原因,空闲堆被误报,但是 GC 不应该像应用程序运行时那样频繁地启动。有人可以帮忙吗?

FWIW,在 Galaxy S3 上运行的相同应用程序在开始时显示大约 20% 的堆使用量,即使它显示相同的总内存量 (~10 MB)。有问题的手机是 Galaxy S2。

4

1 回答 1

0

将手机升级到 Cyanogenmod 10.1,现在堆使用量在开始时约为 30%,GC 不再启动。也许三星固件中的错误?

于 2013-08-12T21:54:43.680 回答