Профилирование Java EE1.5 или SE1.6 - PullRequest
1 голос
/ 04 декабря 2009

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

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

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

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

Ответы [ 5 ]

5 голосов
/ 04 декабря 2009

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

2 голосов
/ 04 декабря 2009

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

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

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

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

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

1 голос
/ 04 декабря 2009

Существует "быстрый и грязный", но эффективный способ найти проблемы с производительностью в Java. Это является не зависящим от языка объяснением того, почему оно работает.

1 голос
/ 04 декабря 2009

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

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

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

0 голосов
/ 21 сентября 2010

Обратите внимание, что 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...