Подробно проанализируйте кучу Tomcat в производственной системе - PullRequest
9 голосов
/ 16 декабря 2008

Проанализировав легкую загрузку веб-приложения, запущенного в tomcat, с помощью JMX Console, выясняется, что «PS Old Gen» растет медленно, но постоянно. Он начинается с 200 МБ и растет около 80 МБ / час.

Процессор не проблема, он работает в среднем на 0-1%, но где-то утечка памяти, поэтому через несколько дней после развертывания он станет нестабильным.

Как узнать, какие объекты размещены в куче? Вы знаете какие-нибудь хорошие учебники или инструменты?

Ответы [ 6 ]

2 голосов
/ 16 декабря 2008

Вы можете попробовать jmap , один из JDK Development Tools . Вы можете использовать jhat с выводом для обхода дампов кучи с помощью веб-браузера.

См. этот ответ для краткого объяснения.

Это происходит довольно часто, поэтому поиск SO для этих инструментов должен найти некоторые альтернативы.

1 голос
/ 26 ноября 2012

То, что вы видите, нормально, если вы не можете доказать обратное. Вам не нужно анализировать кучу, когда дополнительное «потребляемое пространство» исчезает, когда происходит сбор мусора в старом пространстве. В какой-то момент, когда используемое пространство достигнет вашего максимального размера кучи, вы увидите паузу, вызванную используемым по умолчанию GC, и после этого используемая память будет сильно уменьшаться. Только если он не выходит из строя после GC, вам может быть интересно, что все еще удерживает эти объекты.

1 голос
/ 08 января 2009
1 голос
/ 16 декабря 2008

Вы можете использовать Профилировщик NetBeans . Он имеет 2 режима: запуск профилирования tomcat напрямую из ide (для локального хоста) или использование удаленного профилирования с предоставленным JAR и некоторые настройки конфигурации на сервере.

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

1 голос
/ 16 декабря 2008

Я успешно использовал инструмент HeapAnalyzer от IBM alphaWorks . Он берет вывод из профиля кучи Java hprof и анализирует его, чтобы показать наиболее вероятные утечки памяти.

0 голосов
/ 19 декабря 2008

JRockit Mission Control может анализировать утечки памяти при подключении к JVM. Не нужно делать снимки все время. Это может быть полезно, если у вас есть сервер с большой кучей.

Просто подключите инструмент к JVM, и он даст вам таблицу трендов, где вы можете увидеть, какой тип объектов растет больше всего, а затем вы можете исследовать ссылки на эти объекты. Вы также можете получить трассировку распределения во время работы JVM, чтобы вы могли видеть, где в приложении размещены объекты.

Вы можете скачать его здесь бесплатно

...