3

首先,我想在这里为 Honeycomb 粘贴一些 GC 日志消息。

03-08 01:31:54.354: D/dalvikvm(258): GC_CONCURRENT freed 196K, 5% free 7078K/7431K, paused 3ms+3ms
03-08 01:31:54.494: D/dalvikvm(258): GC_FOR_ALLOC freed 4K, 5% free 7073K/7431K, paused 75ms
03-08 01:31:54.494: I/dalvikvm-heap(258): Grow heap (frag case) to 7.391MB for 411152-byte allocation

我这里有 4 个问题。

  1. 我在 Google i/o 2011 上观看了视频“ Android 内存管理”,但我仍然不清楚 5% 的免费 7078K/7431K。这意味着我们在 7431K 堆大小中使用 7078K,但是 7431K 在这里意味着什么?因为我注意到 7431K 会达到一个很大的数量。这个数字有什么政策吗?如果这意味着总堆大小,它应该是 16M 或 32M 或类似的东西。但这里显然不是..

  2. Honeycomb 也有类似Grow heap (frag case) to 7.391MB for 411152-byte allocationGingerbread 没有的消息。这是什么意思?

  3. Honeycomb 及更高版本中的 GC 日志消息不显示“external xxxK/xxxK”之类的外部内存信息,为什么?

  4. 我也注意到,在ICS及以后的版本中,GC日志消息也有一个总时间GC_FOR_ALLOC freed 190K, 13% free 5409K/6164K, paused 67ms, total 71ms,但是这里alloc gc的总时间大于暂停时间,有时你会注意到总时间会比暂停时间大得多。为什么?

4

1 回答 1

0

关于第 3 点(关于外部内存信息),可能是因为位图是 Dalvik 内存的一部分,而不是现在的外部内存,因此外部内存与垃圾收集器几乎没有相关性。

于 2013-06-09T00:07:45.790 回答