Android GC日志消息的含义

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. 我已经观看了2011年Google i/o中的视频 "Android Memory Management",但我仍然不清楚5% free 7078K/7431K是什么意思。它表示我们在7431K堆大小中使用了7078K,但这里的7431K是什么意思?因为我注意到7431K会变成一个很大的数字。这个数字有没有任何政策?如果它表示总堆大小,应该是16M或32M之类的。但是这里显然不是这样。

  2. Honeycomb也有像Grow heap (frag case) to 7.391MB for 411152-byte allocation的消息,而Gingerbread没有。这是什么意思?

  3. Honeycomb及更高版本的GC日志消息没有显示像“external xxxK/xxxK”这样的外部内存信息,为什么?

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

1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接