Как перенаправить подробный вывод сборки мусора в файл?


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

4 64

4 ответа:

на выходе java -X:

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

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

-Xloggc:filename

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

пример:

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

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

на Sun JVM:

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

на IBM JVM:

-Xverbosegclog:C:\whereever\jvm.log 

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

краткий отрывок:

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

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

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

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

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

Java 9 & Unified JVM Logging

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

-Xlog

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

-Xlog:gc

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

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

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