Как перенаправить подробный вывод сборки мусора в файл? - PullRequest
66 голосов
/ 22 июля 2009

Как перенаправить подробный вывод сборки мусора в файл? На веб-сайте Sun показан пример для Unix, но он не работает для Windows.

Ответы [ 4 ]

88 голосов
/ 22 июля 2009

С выхода java -X:

    -Xloggc:<file>    log GC status to a file with time stamps

Документировано здесь :

-Xloggc: имя файла

Устанавливает файл, в который должна быть перенаправлена ​​подробная информация о событиях GC для регистрации. Информация, записанная в этот файл, аналогична выводу -verbose:gc со временем, прошедшим с момента первого события GC, предшествующего каждому зарегистрированному событию. Опция -Xloggc переопределяет -verbose:gc, если оба они даны одной и той же командой java.

* * Пример тысяча двадцать-один: * * 1 022
    -Xloggc:garbage-collection.log

Таким образом, результат выглядит примерно так:

0.590: [GC 896K->278K(5056K), 0.0096650 secs]
0.906: [GC 1174K->774K(5056K), 0.0106856 secs]
1.320: [GC 1670K->1009K(5056K), 0.0101132 secs]
1.459: [GC 1902K->1055K(5056K), 0.0030196 secs]
1.600: [GC 1951K->1161K(5056K), 0.0032375 secs]
1.686: [GC 1805K->1238K(5056K), 0.0034732 secs]
1.690: [Full GC 1238K->1238K(5056K), 0.0631661 secs]
1.874: [GC 62133K->61257K(65060K), 0.0014464 secs]
36 голосов
/ 21 февраля 2011

Если дополнительно вы хотите передать вывод в отдельный файл, вы можете сделать:

На Sun JVM:

-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps

ON и IBM JVM:

-Xverbosegclog:C:\whereever\jvm.log 
8 голосов
/ 23 мая 2016

Чтобы добавить к ответам, приведенным выше, есть хорошая статья: Полезные флаги JVM - Часть 8 (GC Logging) от Патрика Пешлоу.

Краткая выдержка:

Флаг -XX:+PrintGC (или псевдоним -verbose:gc) активирует «простой» режим регистрации ГХ

По умолчанию журнал GC записывается в стандартный вывод. С -Xloggc:<file> мы можем вместо этого указать выходной файл. Обратите внимание, что этот флаг также неявно устанавливает -XX:+PrintGC и -XX:+PrintGCTimeStamps.

Если вместо -XX:+PrintGC мы используем -XX:+PrintGCDetails, мы активируем «подробный» режим регистрации ГХ, который отличается в зависимости от используемого алгоритма ГХ.

При -XX:+PrintGCTimeStamps отметка времени, отражающая реальное время, прошедшее в секундах с момента запуска JVM, добавляется к каждой строке.

Если указать -XX:+PrintGCDateStamps, каждая строка начинается с абсолютной даты и времени.

3 голосов
/ 20 апреля 2017

Java 9 & Unified JVM Logging

JEP 158 представляет общую систему регистрации для всех компонентов JVM, которая изменит (и упростит IMO) работу регистрации с GC. JEP 158 добавил новую опцию командной строки для управления ведением журналов со всех компонентов JVM:

-Xlog

Например, следующий параметр:

-Xlog:gc

будет регистрировать сообщения, помеченные тегом gc, используя уровень info, до stdout. Или этот:

-Xlog:gc=debug:file=gc.txt:none

будет регистрировать сообщения, помеченные тегом gc, используя уровень debug, в файл с именем gc.txt без декораций. Для более подробного обсуждения вы можете ознакомиться с примерами на странице JEP .

...