Как перенаправить подробный вывод сборки мусора в файл?
как перенаправить подробный вывод сборки мусора в файл? Сайт Sun показывает пример для Unix, но он не работает для Windows.
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 страница.