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