Другое место, где объясняются сообщения сборщика мусора Dalvik, находится в этом видео: Google I / O 2011: Управление памятью для Android Apps
Примерно через 14 минут в презентацию , он разбивает формат сообщения. (BTW, у этого видео есть действительно хорошая информация об утечках памяти отладки)
Грубо говоря, формат [Reason] [Amount Freed], [Heap Statistics], [Статистика внешней памяти], [ Пауза Время]
Роберт / юку уже дал информацию о значении этих.
Например освобожден 2125K
Самоочевидный
Например. 47% бесплатно 6214K / 11719K
Эти числа отражают условия после запуска GC. «47% свободных» и 6214 тыс. Отражают текущее использование кучи. 11719K представляет общий размер кучи. Из того, что я могу сказать, куча может расти / сокращаться, поэтому вы не обязательно будете иметь OutOfMemoryError, если вы нажмете этот предел.
Например external 7142K
Примечание: Это может существовать только в пре-сотовых версиях Android (до 3.0).
Перед Honeycomb растровые изображения выделены вне вашей виртуальной машины (например, Bitmap.createBitmap () выделяет растровое изображение извне и выделяет всего несколько десятков байтов на вашей локальной куче). Другие примеры внешних распределений для java.nio.ByteBuffers.
Если это параллельное событие GC, будет указано два раза. Один из них - для паузы перед GC, один - для паузы, когда GC в основном выполняется. Например. приостановлено 3 мс + 5 мс
Для неконкурентных событий GC есть только одно время паузы, и оно обычно намного больше. Например. приостановлено 87 мс
Разбить по пробелам, за которым следует положительный прогноз, который проверяет, является ли следующий символ скобки (если есть) открытым (или конец ввода):
\s+(?=[^\])}]*([\[({]|$))
, чтобы соответствовать пространству вне (), {} и [] использовать этот шаблон (\s)(?:(?=(?:(?![\]\)}]).)*[\[\({])|(?!.*[\]\)}]))
Демо
Не расщепляется, но выполняется сопоставление и обрезка. Пример в JavaScript, вы можете попробовать его в консоли браузера:
var a = '[apples carrots] (car plane train) {food water} foo bar';
a.match(/[a-zA-Z0-9\[\]\(\){}]+/g).map(function (s) { return s.replace(/[\[\]\(\)\{\}]/, ''); });
["apples", "carrots", "car", "plane", "train", "food", "water", "foo", "bar"]
Альтернативно:
a.split(/\s+(?![^\[]*\]|[^(]*\)|[^\{]*})/)
Производит:
["[apples carrots]", "(car plane train)", "{food water}", "foo", "bar"]
\s+( <-- Unbalanced '(' ?=[^\])}]*([\[({]|$)
– sln 18 September 2013 в 02:14