我尝试调试一个内存不足错误的Android应用程序。该 app在某些情况下无法分配3Mbytes。我分析了adb日志, dalvikvm有一些调试输出如下:
dalvikvm: GC_FOR_MALLOC freed <1K, 47% free 4781K/8967K, external 55469K/57517K, paused 64ms
dalvikvm: GC_EXTERNAL_ALLOC freed <1K, 47% free 4781K/8967K, external 55469K/57517K, paused 80ms
dalvikvm: GC_FOR_MALLOC freed 0K, 47% free 4781K/8967K, external 55469K/57517K, paused 39ms
我将上面输出的数字与“堆”窗口中的数字进行比较 DDMS。 “免费4781K / 8967K”似乎对应于“Allocated”和 DDMS“堆”中的“堆大小”。但是,我不确定什么是“外部的” 55469K / 57517K“。我怀疑它是由本机代码分配的内存。 有人知道吗?
答案 0 :(得分:1)
这很复杂,所以Android平台工程师说:
How do I discover memory usage of my application in Android?
对于Android应用程序来说,3mb是很多的,起始堆非常小,约为16-32mb。