快速检查堆?

时间:2011-06-01 14:47:16

标签: android memory heap device

我有一个扎根的Evo作为测试设备。现在我一直在测试我的应用程序,最近(相对而言)我有持续的内存泄漏或过度分配。所以一时兴起,我决定在我工作的平板电脑上进行测试。该应用运行正常。甚至没有一丝内存问题。所以我开始怀疑在我的设备生根时我的堆大小是否已经满了?当应用程序在我的Evo上崩溃时,我怀疑的一部分来自这一行。现在,如果这条线可以信任,那就远了。我认为我的2.2 Evo堆(最小)是16MB --- 24MB。

dalvikvm  E  Out of memory: Heap Size=4803KB, Allocated=2452KB, Bitmap Size=19002KB

所以我的问题是:有没有办法在手机上找到实际允许的堆大小?有什么方法可以修改它吗?

TFYT~Aedon

1 个答案:

答案 0 :(得分:1)

要获取手机上实际允许的堆,您可以使用http://developer.android.com/reference/android/app/ActivityManager.html#getMemoryClass(),它将返回一个整数,表示每个应用程序的最大堆数MB。

并且您不能将其更改为应用程序的开发人员(您可以更改您拥有的设备的最大堆)。但是,如果您的目标是API级别11(Honeycomb),则可以将android:largeHeap="true"放入清单文件中,然后调用http://developer.android.com/reference/android/app/ActivityManager.html#getLargeMemoryClass()以获取每个应用的最大堆数,这可能比正常情况更大堆大小。