Я настроил Java для сброса информации о сборке мусора в журналы ( подробный сборщик мусора ). Я не уверен, что означают записи о сборке мусора в журналах. Образец этих записей размещен ниже. Я искал в Google и не нашел убедительных объяснений.
У меня есть несколько разумных предположений, но я ищу ответы, которые содержат строгие определения того, что означают числа в записях, и подкреплены надежными источниками. Автоматический +1 ко всем ответам, цитирующим документацию Sun. Мои вопросы:
- Что означает PSYoungGen? Я предполагаю, что это как-то связано с предыдущим (младшим?) Поколением, но что именно?
- В чем разница между второй тройкой чисел и первой?
- Почему имя (PSYoungGen) указано для первой тройки чисел, а не для второй?
- Что означает каждое число (размер памяти) в тройке. Например, в 109884K-> 14201K (139904K) это память перед GC 109884k, а затем она уменьшается до 14201K. Насколько актуален третий номер? Зачем нам нужен второй набор чисел?
8109.128: [GC [PSYoungGen: 109884K-> 14201K (139904K)] 691015K-> 595332K (1119040K), 0,0454530 сек]
8112.111: [GC [PSYoungGen: 126649K-> 15528K (142336K)] 707780K-> 605892K (1121472K), 0,0934560 с]
8112.802: [GC [PSYoungGen: 130344K-> 3732K (118592K)] 720708K-> 607895K (1097728K), 0,0682690 сек]
источник
Ответы:
Большая часть этого объяснена в Руководстве по настройке сборщика мусора (которое вам все равно стоит прочитать).
Я не уверен, почему в вашем PSYoungGen; вы меняли сборщик мусора?
источник
Пример ассоциированного полного GC также показывает коллекторы, используемые для старого и постоянного поколений:
Наконец, разбив одну строку вашего примера вывода журнала:
источник
Я просто хотел упомянуть, что подробный журнал GC можно получить с помощью
параметр. Затем вы видите вывод PSYoungGen или PSPermGen, как в ответе.
Также,
-Xloggc:gc.log
похоже, генерирует такой же вывод, как,-verbose:gc
но вы можете указать выходной файл в первом.Пример использования:
Чтобы лучше визуализировать данные, вы можете попробовать gcviewer (более свежую версию можно найти на github ).
Позаботьтесь о том, чтобы параметры были записаны правильно, я забыл "+", и мой JBoss не запускался без сообщения об ошибке!
источник
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<some number of files> -XX:GCLogFileSize=<some size> -XX:+PrintTenuringDistribution