2009-12-04 2 views
1

Я новичок в профилировании Java, и я хотел бы спросить об этом.Профилирование Java EE1.5 или SE1.6

Имеет ли смысл профилировать приложение на сервере, где у меня только консоль?

Есть ли какой-нибудь консольный профилировщик, который имеет смысл?

Или я должен профилировать приложение только на localhost?

ответ

2

Когда вы выполняете профилирование, вы должны как можно лучше воспроизвести производственную среду. Различия в оборудовании (количество ядер, памяти и т. Д.) И программное обеспечение (ОС, версия JVM) могут сделать ваши профилирующие результаты такими же уникальными, как среда выполнения.

Например, то, что выглядит как узкое место процессора, которое стоит оптимизировать на вашем локальном компьютере, может полностью исчезнуть или превратиться в узкое место на вашем производственном сервере в зависимости от различий в процессоре.

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

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

Я предпочитаю использовать JProfiler за его обширные функции и хорошую производительность. Я ранее использовал YourKit, но переключился на JProfiler для своих функций профилирования памяти и потоков.

5

VisualVM способен подключиться к удаленному хосту. Профилирование работает так же, как и локально. Это часть JDK начиная с JDK 6 Update 7.

+0

Насколько я знаю, он контролирует только удаленные приложения, но не обрабатывает их. – pondermatic

1

Имеет ли смысл профилировать приложения на сервере, где я есть только консоль?

К счастью, это не имеет значения, так как Java всегда (ну, в течение длительного времени, во всяком случае) поддерживает удаленное профилирование, т.е. Profiler может работать на другой машине, чем JVM профилируются и получать данные с помощью сеть.

Все профилировщики Java, которые я когда-либо видел, поддерживают это, включая visualvm, который поставляется с недавними JDK (в каталоге bin).

1

Существует "quick and dirty" but effective способ найти проблемы с производительностью на Java. This - языковое агностическое объяснение того, почему оно работает.

0

Обратите внимание, что JDK поставляется со встроенным профилировщиком, HPROF. HPROF немного упрощен, но будет много проблем. Он активируется просто путем вызова JVM с параметром -agentlib: hprof; он автоматически запускается до тех пор, пока работает JVM. Он собирает данные до тех пор, пока JVM не завершится, а затем выгрузит его в файл на сервере, который вы можете проанализировать.

См., Например, http://java.sun.com/developer/technicalArticles/Programming/HPROF.html для хорошего введения. Хорошим графическим анализатором для результатов HPROF является PerfAnal: http://java.sun.com/developer/technicalArticles/Programming/perfanal/

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