Есть ли удаленный профилировщик для Java? (который использует JMX предпочтительно)

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

Они немного помогают, но, к сожалению, они не сообщают вам, куда делась память, а лишь показывают, сколько памяти используется. Я ищу более подробный профилировщик, чтобы помочь мне найти объекты, которые поглощают мою память. У кого-нибудь есть идеи? Предпочтительно тот, который говорит о порте JMX, чтобы мне не пришлось перенастраивать программу. Спасибо!

4 ответа

Если на рассматриваемом компьютере установлены клиентские библиотеки X11, И доступный сервер ssh, который позволяет пересылку X11, И сервер X11, работающий на вашем локальном компьютере (возможно, http://sourceforge.net/projects/xming/) И вы используете В Sun Java 6u10 или более поздней версии вы можете установить ssh (с -X или -Y) в коробку Linux и запустить там jvisualvm, показывая его GUI-интерфейс на вашей локальной машине.

Запуск на той же машине позволяет jvisualvm подключаться непосредственно к запущенному процессу Java вместо выполнения всех видов настройки voodoo.

NetBeans Java Profiler поддерживает профилирование удаленных JVM. Можно подключить NetBeans к удаленной JVM с помощью JMX.

Презентация, доступная на сайте JavaPassion, содержит несколько советов о том, как начать работу.

Хм... на самом деле, VisualVM имеет отличный профилировщик памяти, который может сказать вам не только о том, какие объекты потребляют вашу память, но и о том, где на них (возможно, случайно) ссылаются.

Просто нажмите кнопку "Сброс кучи" на вкладке "Монитор" и удивитесь!

Я посмотрел на несколько и больше всего понравился YourKit.

Он был самым простым в использовании и прекрасно работает с JMX.

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