У меня есть экземпляр Tomcat, который показывает следующее поведение:
Проблема состоит в том, что в ходе обрабатывания 400k запроса мое веб-приложение генерирует приблизительно 100 МБ мусора, который заполняет пространство Eden и инициировал молодой набор поколения.
Я попытался использовать созданный в Java hprof функциональность, чтобы сделать профилирование сайтов выделения, но Tomcat, казалось, не запустил правильно с этим на месте. Возможно, что я был просто немного нетерпелив, поскольку я предполагаю, что профилирование выделения памяти имеет высокие издержки, и поэтому запуск кота мог бы занять много времени
Что лучшие инструменты должны использовать, чтобы сделать профилирование памяти Java очень молодых объектов/мусора? Я не могу использовать дампы "кучи", потому что объекты, которыми я интересуюсь, являются мусором.
Вы можете использовать профилировщик в jvisualvm в JDK для профилирования памяти.
Также ознакомьтесь с шаблонами для кэширования преобразователя XSLT.
http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/Templates.html
Что касается реальной проблемы: синтаксический анализ XML может сильно отнимать память при использовании парсера на основе DOM. Рассмотрите возможность использования парсера на основе SAX или двоичного XML ( VTD-XML - это Java API, основанный на этом).
На самом деле, если отображение XML-> JSON является чистым 1: 1, вы также можете просто прочитать XML и записать JSON в реальном времени построчно, используя небольшой стек.
Возвращаясь к вопросу: предлагаю использовать для этого VisualVM . Вы можете найти здесь статью в блоге о том, как заставить его работать с Tomcat.
Вы должны иметь возможность заставить дамп кучи работать в любом случае, отлаживая приложение, размещая точки останова в ключевых точках кода и создавая дамп кучи, пока приложение приостанавливается в каждой точке останова.
Вы можете попробовать LambdaProbe, который является профилировщиком для Tomcat. Он поддерживает следующее:
Обзор
Lambda Probe (ранее Tomcat Probe) - это самодостаточное веб-приложение, которое помогает визуализировать различные параметры экземпляра Apache Tomcat в режиме реального времени. Lambda Probe разработан специально для работы с Tomcat, поэтому он способен получить доступ к гораздо большему количеству информации, которая обычно доступна JMX-агентам. Вот список возможностей, доступных через Lambda Probe: