2009-07-21 2 views

ответ

81

С выходом java -X:

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

документированного here:

-Xloggc: именем файла

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

Пример:

 -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] 
+1

Большое спасибо за отличный ответ – djangofan

+0

java --Xloggc: firstgen.log -Xloggc: secondgen.log, похоже, не работает. – djangofan

+0

Кроме того, это не увеличивает выход, как я и ожидал. После использования этих аргументов нет дополнительных данных: -Xloggc: gc.log -XX: -PrintGCDetails – djangofan

34

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

По состоянию на Sun JVM:

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

ПО в IBM JVM:

-Xverbosegclog:C:\whereever\jvm.log 
+4

Если вы используете -Xloggc, вам не нужна -verbose: gc. – tfb785

6

Чтобы добавить к выше ответов, есть хорошая статья: Useful JVM Flags – Part 8 (GC Logging) Патрик Peschlow.

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

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

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

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

С временная метка, отражающая реальное время, прошедшее через несколько секунд с момента запуска JVM в каждую строку.

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

1

Java 9 & Unified JVM Logging

JEP 158 вводит единую систему регистрации для всех компонентов виртуальной машины Java, которые будут меняться (и ИМО упрощающих), как протоколирование работы с GC. СЭП 158 добавлен новый параметр командной строки для управления протоколирование всех компонентов JVM:

-Xlog 

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

-Xlog:gc 

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

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

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