Сначала я хотел бы вставить некоторые сообщения журнала GC здесь для Honeycomb.Значения для Android GC Log message
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 вопроса здесь.
У меня есть смотреть видео "Android Memory Management" в Google I/O 2011, но я до сих пор не ясно, о 5% свободного 7078K/7431K. Это означает, что мы используем 7078K в размере кучи 7431K, но что здесь означает 7431K? Потому что я замечаю, что 7431K будет до большого числа. Есть ли какая-либо политика для этого числа? Если это означает общий размер кучи, он должен быть 16M или 32M или что-то в этом роде. Но здесь явно нет.
Honeycomb также имеет сообщение
Grow heap (frag case) to 7.391MB for 411152-byte allocation
, которое у пряника не имеет. Что это значит?Сообщения протокола GC в Honeycomb, а затем не отображаются данные внешней памяти, такие как «external xxxK/xxxK», почему?
Я также замечаю, что в ICS и более поздней версии сообщение журнала GC также имеет общее время, например
GC_FOR_ALLOC freed 190K, 13% free 5409K/6164K, paused 67ms, total 71ms
, но здесь общее время gc общее время больше, чем пауза, а иногда вы заметите, что общее время будет намного больше чем приостановленное время. Почему?