我目前正在开发一个 android 应用程序,我正在使用我自己的设备(nexus 4)来调试它。我似乎对 Dalvik VM 分配的堆大小有疑问,希望您能在这方面帮助我。
我的应用程序正在处理文件中相对重要的数据量(~3MB),并使用它来生成总共大约 10MB 的 java 对象。对于具有 2GB RAM 和 512MB 堆大小限制的设备(如果我没记错的话),这应该不是问题。
然而,调试工具告诉我分配给我的应用程序的堆大小大约为 10MB,导致垃圾收集的数量惊人(每个 GC 释放约 500KB)。我已经在 SO 和其他论坛上浏览了很多关于 Dalvik 堆大小模型等的页面,我发现largeHeap="true"
在这种情况下使用(API 级别 13+)属性,但是,它没有任何改进,我仍然坚持当设备的初始内存为 2GB 时使用 10MB。我知道操作系统等会占用一些内存,Dalvik 也限制了应用程序,但为什么我不能达到至少 512MB?
那么,我是不是误会了什么?我错过了什么?这个问题看起来很简单,但我不明白。
对你的帮助表示感谢!
PS:请不要建议切换到NDK,它不适合我的情况。