Параметр командной строки -verbose:gc
позволяет печатать информацию о куче и сборке мусора в каждой коллекции. Например, вот вывод из приложения большого сервера:
[GC 325407K->83000K(776768K), 0.2300771 secs]
[GC 325816K->83372K(776768K), 0.2454258 secs]
[Full GC 267628K->83769K(776768K), 1.8479984 secs]
Здесь мы видим две второстепенные коллекции, за которыми следует одна крупная коллекция. Цифры до и после стрелки (например, 325407K->83000K
от первой строки) указывают объединенный размер живых объектов до и после сборки мусора, соответственно. После незначительных коллекций размер включает некоторые объекты, которые являются мусором (больше не живы), но которые не могут быть восстановлены Эти объекты либо содержатся в постоянном поколении, либо на них ссылаются постоянные или постоянные поколения.
Следующее число в скобках (например, (776768K)
снова из первой строки) - это фиксированный размер кучи: объем пространства, используемого для Java-объектов без запроса дополнительной памяти из операционной системы. Обратите внимание, что это число не включает одно из пространств оставшихся в живых, поскольку в любой момент времени может использоваться только одно, а также не включает в себя постоянное генерирование, которое содержит метаданные, используемые виртуальной машиной.
Последний элемент в строке (например, 0.2300771 secs
) указывает время, необходимое для выполнения сбора; в этом случае примерно четверть секунды.
Формат основной коллекции в третьей строке аналогичен.
Формат вывода, созданного -verbose:gc
, может быть изменен в будущих выпусках.