尽管有大量释放的内存,但是Heap会大幅跳跃 - Android

时间:2016-02-15 20:48:16

标签: android memory-management heap-memory dalvik

有人可以向我解释以下内容!

在我的应用程序中显示重图像,至少其中一些。一个占据约。 63 MB的RAM。 (3000 * 5333 * 4)4适用于4个通道 - 红色,绿色,蓝色和透明度。由于这个原因,我必须在清单中将堆设置为大。所以对于我的三星Galaxy S3,我可以使用304 MB的堆。

所以我不明白的是Dalvik在为图像分配内存时的想法。你可以看到堆如何在某些点上进行巨大的跳跃。

当压力测试应用程序时,我通过点击最重的图像来玩游戏。该应用程序很快占用111 MB的RAM并在那里停留一段时间。 69 MB是免费的。 然后 - 当我选择点击63 MB的重图像时,我认为它适合69 MB的可用空间 - 但不是!!!!相反,它需要一个巨大的飞跃,分配172 MB。我不明白Dalvik是如何工作的 - 69 MB是免费的,而且图像更适合这个空间 - 所有相同的应用程序跳转到172 MB。

很高兴答案!!!

02-15 21:32:18.254: D/dalvikvm(29897): WAIT_FOR_CONCURRENT_GC blocked 17ms
02-15 21:32:18.259: D/dalvikvm(29897): WAIT_FOR_CONCURRENT_GC blocked 0ms
02-15 21:32:18.299: D/dalvikvm(29897): GC_EXPLICIT freed 2936K, 63% free 43408K/114311K, paused 11ms+4ms, total 36ms
02-15 21:32:18.344: D/tag(29897): debug. =================================
02-15 21:32:18.344: D/tag(29897): debug.heap native: allocated 4,92MB of 5,11MB (0,17MB free)
02-15 21:32:18.344: D/tag(29897): debug.memory: allocated: 111,00MB of 304,00MB (69,00MB free)
02-15 21:32:18.344: I/System.out(29897): View = android.widget.ScrollView@41f29be8
02-15 21:32:18.424: E/SpannableStringBuilder(29897): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
02-15 21:32:18.424: E/SpannableStringBuilder(29897): SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
02-15 21:32:26.199: D/dalvikvm(29897): GC_FOR_ALLOC freed 220K, 62% free 43496K/114311K, paused 23ms, total 24ms
02-15 21:32:26.284: I/dalvikvm-heap(29897): Grow heap (frag case) to 104.370MB for 63996016-byte allocation
02-15 21:32:26.314: D/dalvikvm(29897): GC_CONCURRENT freed 24K, 41% free 105968K/176839K, paused 12ms+5ms, total 31ms
02-15 21:32:26.724: D/tag(29897): debug. =================================
02-15 21:32:26.724: D/tag(29897): debug.heap native: allocated 5,04MB of 5,16MB (0,12MB free)
02-15 21:32:26.724: D/tag(29897): debug.memory: allocated: 172,00MB of 304,00MB (69,00MB free)

当我点击63 MB图像时,该行对应于logcat中的以下行

02-15 21:32:26.284: I/dalvikvm-heap(29897): Grow heap (frag case) to 104.370MB for 63996016-byte allocation

0 个答案:

没有答案