Искатель ошибок производительности Java
FindBugs имеет возможность сообщать об ошибках "производительности", то есть фрагменты кода, которые могут вызвать проблемы с производительностью. Существуют ли какие-либо другие инструменты, которые могут найти возможные причины проблем с производительностью в Java?
Могут ли какие-либо инструменты фактически перекрестно ссылаться на эти ошибки с данными о производительности (например, кучи дампов, следы), чтобы убедиться, что это реальные проблемы или определить их важность?
Ответы
Ответ 1
Этот тип инструмента называется профилировщик.
В отличие от FindBugs и подобных, профилировщики являются динамическими, то есть собирают данные о производительности по мере запуска программы. Они могут определить проблемы, связанные с использованием ЦП и памяти, конфликтом блокировки, взаимоблокировками и т.д.
Подробный обзор возможностей одного из таких коммерческих инструментов см. в разделе Функции YourKit.
Для некоммерческого инструмента см. Возможности VisualVM.
Ответ 2
Вы также можете использовать JProfiler. JProfiler - это удостоенный наград универсальный Java-профайлер. Интуитивно понятный графический интерфейс JProfiler помогает вам выявлять узкие места производительности, устранять утечки памяти и устранять проблемы с потоками.
Ответ 3
Я предлагаю использовать профилировщик, подобный этому, в Netbeans.
- Создайте единичные тесты с учетом предположения о производительности.
- 1.) Проверьте количество созданных объектов
- Спросите себя: ожидал ли я этого?
- Ищите "процессорных едоков" -method's
-
2.) Хорошо или должен ли этот метод быть быстрее, потому что в методе нет ничего особенного (только неправильный цикл или что-то в этом роде)?
-
Посмотрите только на outlier!!! (вверху 3 или 5)
Вы узнаете многое о своем приложении.