Искатель ошибок производительности Java

FindBugs имеет возможность сообщать об ошибках "производительности", то есть фрагменты кода, которые могут вызвать проблемы с производительностью. Существуют ли какие-либо другие инструменты, которые могут найти возможные причины проблем с производительностью в Java?

Могут ли какие-либо инструменты фактически перекрестно ссылаться на эти ошибки с данными о производительности (например, кучи дампов, следы), чтобы убедиться, что это реальные проблемы или определить их важность?

Ответ 1

Этот тип инструмента называется профилировщик.

В отличие от FindBugs и подобных, профилировщики являются динамическими, то есть собирают данные о производительности по мере запуска программы. Они могут определить проблемы, связанные с использованием ЦП и памяти, конфликтом блокировки, взаимоблокировками и т.д.

Подробный обзор возможностей одного из таких коммерческих инструментов см. в разделе Функции YourKit.

Для некоммерческого инструмента см. Возможности VisualVM.

Ответ 2

Вы также можете использовать JProfiler. JProfiler - это удостоенный наград универсальный Java-профайлер. Интуитивно понятный графический интерфейс JProfiler помогает вам выявлять узкие места производительности, устранять утечки памяти и устранять проблемы с потоками.

Ответ 3

Я предлагаю использовать профилировщик, подобный этому, в Netbeans.

  • Создайте единичные тесты с учетом предположения о производительности.
  • 1.) Проверьте количество созданных объектов
  • Спросите себя: ожидал ли я этого?
  • Ищите "процессорных едоков" -method's
  • 2.) Хорошо или должен ли этот метод быть быстрее, потому что в методе нет ничего особенного (только неправильный цикл или что-то в этом роде)?

  • Посмотрите только на outlier!!! (вверху 3 или 5)

Вы узнаете многое о своем приложении.