Знаете какие-либо инструменты анализа журналов сборки мусора Java?

Я ищу инструмент или скрипт, который будет брать журнал консоли из моего веб-приложения, анализировать информацию о сборке мусора и отображать ее осмысленно.

Я запускаю на Sun Java 1.4.2 JVM со следующими флагами:

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails

Вывод журнала выглядит так:

54.736: [Full GC 54.737: [Tenured: 172798K->18092K(174784K), 2.3792658 secs] 257598K->18092K(259584K), [Perm : 20476K->20476K(20480K)], 2.4715398 secs]

Разобраться в нескольких сотнях записей такого рода было бы гораздо проще, если бы у меня был инструмент, который бы визуально отображал тенденции сбора мусора.

12 ответов

Решение

Инструментарий IBM GC делает именно то, что вы просите.

https://www.ibm.com/developerworks/java/jdk/tools/gcmv/

Я не уверен, что он совместим с журналами GC от JVM от Sun.

gcviewer делает то, что вы хотите.

Я думаю, что некоторые люди добавляют Java-зонды, которые на самом деле не анализируют журналы сбора мусора, как говорится в вопросе...

Я пробовал другие (gcviewer, gchisto, IBM) и лучший инструмент для анализа логов GC, который я нашел, - HPjmeter

Он в основном предназначен для виртуальных машин HP-UX, но он также обычно работает с виртуальными машинами Sun и отлично работает.

http://blog.xebia.com/wp-content/uploads/2008/09/hpjmeter-gctime.jpg

Я попробовал онлайн инструмент http://gceasy.io/, он может читать мой журнал Sun JDK 1,8 GC.

Самый мощный инструмент, который я нашел для работы с журналами IBM и Hotspot JVM и их визуализации, - это PMAT IBM: https://www.ibm.com/developerworks/mydeveloperworks/groups/service/html/communityview?communityUuid=22d56091-3a7b-4497-b36e-634b51838e11

Я нахожу это быстрее и дает больше подробностей, чем инструмент в IBM Support Assistant. Это постоянно обновляется, в конце июля 12 года.

Однако, кажется, есть некоторые проблемы при разборе журналов с политикой CMS, но, надеюсь, это можно исправить.

PrintGCStats тоже довольно хорош и дает хорошую статистику, но не для визуализации во времени, которая требует некоторой работы.

VisualVM лучше, чем jconsole, разрабатывает и свободно распространяет Sun. Он имеет плагин для анализа GC, называемый gchisto, который может вам помочь.

Изменить: Извините, я не видел ваше требование JDK 1.4.2. В этом случае VisualVM не поможет вам, увы.

Я использую JavaK-профилировщик YourKit, который позволяет вам измерять подобные вещи и многое другое, но использует собственный формат, а не анализирует журнал. Он может сделать больше под Java 5, но должен работать под 1.4.

Несколько лет назад Джон Комес (группа Hotspot GC) выпустил PrintGCStats, скрипт awk для "подведения итогов статистики по сбору мусора, в частности итогов времени gc паузы, средних значений, максимальных и стандартных отклонений". Копия скрипта размещена на java.net: http://java.net/projects/printgcstats

Попробуйте VisualGC от Sun. Существуют версии JDK 4 и 5, которые дают вам хорошее представление о том, что происходит в пространствах Эдема, Поколения и Перми. Вам нужно добавить JAR и получить PID, а Боб - ваш дядя.

Плагин gchisto для VisualVM не работает https://gchisto.dev.java.net/

У меня есть файл со всеми деталями printgc для jdk1.6, но я не смог найти инструмент для его чтения. Ранее с jdk1.5 мы использовали HPjmeter, он работал нормально, но теперь с jdk1.6 это не работает

Попробовал следующее: IBM Pattern Modeling and Analysis Tool для сборщика мусора Java - он не распознает файл. GCCollector не работает, он продолжает читать файл для анализа.

jconsole может вам сильно помочь, но я думаю, что это только Java 5 и более поздние версии. Однажды я услышал, как кто-то из SUN говорит в нашем университете, и он сказал, что сборщик мусора в Java 6 НАМНОГО лучше, чем старые, которые почти всегда нуждались в сложной настройке для больших приложений. Java 6 GC, кажется, намного лучше масштабируется на SMP.

Как насчет того, чтобы попробовать какой-нибудь инструмент для профилирования, такой как JProbe Freeware (плагин Eclipse).

Другие вопросы по тегам