У меня довольно сложное Java-приложение, использующее много CPU, и хотелось бы знать, есть ли какая-либо рекомендация в профиле, которую я мог бы использовать, чтобы определить причину использования ЦП. Моя цель - определить местоположение в коде, где используется большая часть процессорного времени.Java Profiling on Linux
ответ
Я использовал jProfiler и YourKit для Linux. Но вы можете найти информацию, которую ищете, запустив jconsole
, который поставляется с последними JDK. Хорошая информация о том, как его использовать: http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html
Я сейчас смотрю в Profiler4j прямо сейчас. – beyonddc
This method является низкотехнологичным, но works best. Вот почему short explanation.
Поскольку вы не работаете под IDE, вы можете использовать pstack или lsstack, чтобы получить образцы стека. Если приложение использует намного больше времени, чем должно, то, скорее всего, проблема заключается в одном или нескольких вызовах функций изгоев, которые будут хорошо видны на большинстве образцов стека.
Netbeans имеет хороший встроенный профайлер. NB работает довольно хорошо на Ubuntu 9.10
Если ваша проблема не может быть обнаружена в процессе разработки, вы можете прикрепить профилировщик к удаленной JVM (вашей производственной среде). Вы должны настроить JVM хоста, чтобы принять соединения JMS/JConsole от профилировщиков. Карты визуализации в реальном времени JMS/JConsole выглядят довольно удивительно.
Я использовал Visual VM в Eclipse IDE. Если вы не используете IDE, вам помогут jhat и jconsole. Google jhat для получения дополнительной информации
Если вам удобно с Eclipse, я бы рекомендовал TPTP.
Если вы используете Sun Java 6, тогда научитесь использовать jvisualvm в JDK на машине, работающей с трудной программой.
Он ответит на большинство ваших вопросов, может легко подключиться к уже запущенной программе и является безвозмездно.
Любой профилировщик Java будет работать в Linux. – Dolph
Вы используете IDE? Большинство хороших IDE имеют профилировщики, встроенные или доступные в виде модулей. –
Нет, у меня нет IDE. На самом деле мое приложение запускает мое другое приложение. – beyonddc