JProfiler – неплохое решение для профайлинга java-приложений

При работе джава-приложений часто возникают проблемы, связанные с утечкой ресурсов. То процессор кто-то жрет, то память, то взаимная блокировка потоков… В таких ситуациях на помощь приходят профайлеры – программки позволяющие видеть процессы, происходящие внутри приложения. Мы перебрали несколько вариантов, в итоге (года четыре назад) остановились на JProfiler от компании “ej-technologies”. В нем есть все, что нам необходимо для тонкой отладки наших серверов.

Первая проблема, которая чаще всего возникает у нас – утечки памяти. JProfiler позволяет четко увидеть, какие классы, какие методы и какие треды использубт память. Можно увидеть развернутую картинку по любому объекту. Имеется таблица классов, отсортированная по расходу памяти. Кроме того, есть реал-тайм график расхода памяти во времени – видно пики, всплески, моменты срабатывание сборщика мусора и т.п. Даже не сосчитать, сколько раз мы находили и устраняли разнообразные утечки… :)

Вторая проблема – использование процессорного времени. Для его анализа так же есть удобная таблица классов (или методов – на выбор), отсортированная по нагрузке на процессор. JProfiler и сам умеет выявлять для пользователя наиболее затратные методы, подсвечивая их.

Третья проблема – неудаленные потоки. Частенько бывало, что вроде бы тред ты убил, но он по каким-то причинам остался работать. Эти треды накапливаются и обязательно доведут в итоге до StackOverflowException. В профайлере имеется список активных потоков. Главное, когда создаете очередной поток, давать ему понятное вам имя (Thread.setName(“”)). К списку прилагается реал-тайм график, показывающий количество одновременно работающих тредов.

Приведенный список – это всего лишь малая часть функционала профилирования, который предоставляет нам JProfiler. Там есть много-много всего, огромное количество инструментов. Также, есть возможность удаленного профайлинга, хотя ей мы пока не пользовались. Если есть интерес, мы в следующих постах расскажем более подробно о том, как пользоваться основными функциями этой незаменимой программы. :)

Эта запись была опубликована в рубрике Мысли о разработке и отмечена метками , , , , , . Добавить в закладки ссылку.

Комментирование закрыто.