2010-08-28 4 views
4

Я пытаюсь найти утечки памяти и проблемы с производительностью с помощью моего приложения Java. Есть ли там программа, которая может помочь мне отладить мое приложение и отобразить результаты работы?Какой хороший отладчик java?

Спасибо.

+4

Что вы используете в настоящее время, что не подходит для ваших нужд? –

+0

Eclipse. Я пытаюсь использовать плагин памяти, но я просто не могу заставить его работать. Поэтому я ищу более профессиональное приложение, а не простой плагин. – Kyle

+1

Возможно, вы захотите изменить свой заголовок на «Что такое хороший профилировщик Java?» - поскольку традиционные отладчики обычно лучше подходят для диагностики ошибок управления и логики, а * профилировщики лучше подходят для диагностики утечек памяти и проблем с производительностью. –

ответ

4

Посмотрите на jvisualvm в JDK - подмножество профилировщика Netbeans, который может подключаться к запущенному процессу Java 6 и позволяет вам профилировать его и анализировать память.

https://visualvm.dev.java.net/gettingstarted.html

+0

Да. JVisualVM - это абсолютно лучший инструмент для визуализации и отладки утечек памяти в Java. –

+0

Не обязательно, но участие в JDK делает его хорошим отправным местом. –

+0

@Kyle, добро пожаловать. В JDK есть больше инструментов, которые приятно знать, но они более низкого уровня, чем visualvm. –

0

Eclipse, имеет хороший анализатор дампа памяти; но обнаружение утечки памяти может быть очень сложной задачей и требует глубокого погружения в то, как объекты выделяются вашим приложением.

Мне потребовалось 2 дня, чтобы выяснить, что один из моих классов JTable cell editor выделял JDialog при создании экземпляра, фактически не открывая его, а собственная часть диалога удерживала экземпляр редактора ячейки заблокированным, таблицу, таким образом, экран и, следовательно, все объекты объекта, которые были связаны с ним.

1

Я использовал множество инструментов, чтобы узнать, почему моя программа ест 100 МБ RAM, отполировал код, чтобы удалить возможные утечки памяти. Позже я обнаружил, что, как только jvm взял некоторую память из ОС, я не всегда возвращаю ее, даже если эта память не используется, что часто выглядит как утечка памяти. Это зависит от -Xmx и -XX: MaxHeapFreeRatio. Я устанавливаю Xmx в 40, что примерно равно тому, сколько памяти должно использовать мое приложение, а использование памяти остается в пределах 10-15 Мбайт этого диапазона, а не увеличиваться неуправляемо.

Также, jconsole - отличный инструмент. Он поставляется с jdk.

0

Вы можете попробовать инструмент инспектор производительности. Следующим является URL-адрес.

http://perfinsp.sourceforge.net/

производительность Java приложений прямо пропорционально тому, как JVM работает приложение. Этот инструмент дает очень хорошую профилирующую информацию о JVM. Но это не графический инструмент, вам нужно пройти через созданный текстовый файл. Но его однократное усилие, и вы можете пригодиться с этим инструментом. Я использовал его много времени для проблем, связанных с производительностью, и это помогло мне.

Смежные вопросы