Как перенаправить многословную сборку мусора в файл? На веб-сайте Suns показан пример для Unix, но он не работает для Windows.
Как перенаправить многословную сборку мусора в файл?
Ответ 1
Из вывода java -X:
-Xloggc:<file> log GC status to a file with time stamps
Документировано здесь:
-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]
Ответ 2
Если вы хотите передать вывод в отдельный файл, вы можете сделать:
В Sun JVM:
-Xloggc:C:\whereever\jvm.log -verbose:gc -XX:+PrintGCDateStamps
ВКЛ IBM JVM:
-Xverbosegclog:C:\whereever\jvm.log
Ответ 3
Чтобы добавить к приведенным выше ответам, есть хорошая статья: Полезные флаги JVM - часть 8 (регистрация GC) Патрика Песблоу.
Краткий отрывок:
Флаг -XX:+PrintGC (или псевдоним -verbose:gc) активирует "простой" режим регистрации GC
По умолчанию журнал GC записывается в стандартный вывод. С -Xloggc:<file> мы можем указать выходной файл. Обратите внимание, что этот флаг неявно устанавливает -XX:+PrintGC и -XX:+PrintGCTimeStamps.
Если мы используем -XX:+PrintGCDetails вместо -XX:+PrintGC, мы активируем "подробный" режим регистрации GC, который отличается в зависимости от используемого алгоритма GC.
С -XX:+PrintGCTimeStamps отметка времени, отражающая реальное время, прошедшее через секунды, так как начало JVM добавляется к каждой строке.
Если мы укажем -XX:+PrintGCDateStamps, каждая строка начинается с абсолютной даты и времени.
Ответ 4
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.