Подтвердить что ты не робот

Есть ли консольный профилировщик для Java?

Есть ли gprof-подобный профилировщик для Java, который можно запустить с терминала в Linux? Все инструменты, которые я нашел, это GUI-программы, и мне нужно запустить его с терминала.

4b9b3361

Ответ 1

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

java -agentlib:hprof=file=hprof.txt,cpu=samples MyClass

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

Ответ 2

Инструмент с открытым исходным кодом jvmtop содержит терминальный профайлер и может стоить взгляда:

JvmTop 0.7.0 alpha - 15:16:34,  amd64,  8 cpus, Linux 2.6.32-27, load avg 0.41
 http://code.google.com/p/jvmtop

 Profiling PID 24015: org.apache.catalina.startup.Bootstrap

  36.16% (    57.57s) hudson.model.AbstractBuild.calcChangeSet()
  30.36% (    48.33s) hudson.scm.SubversionChangeLogParser.parse()
   7.14% (    11.37s) org.kohsuke.stapler.jelly.JellyClassTearOff.parseScript()
   6.25% (     9.95s) net.sf.json.JSONObject.write()
   3.13% (     4.98s) ....kohsuke.stapler.jelly.CustomTagLibrary.loadJellyScri()

Ответ 3

JXInsight/OpenCore имеет плагины отчетов о терминах/оболочках (сверху, очереди, стеки,...), которые будут регулярно выводить данные измерений и показателей. Также можно получить доступ к этой информации с помощью Open API, который позволяет проверять модель в реальном времени в JVM или в автономном режиме, используя дескриптор файла моментального снимка. Оба поддерживаются через API плагинов, которые работают с ним, как сверху, так и в очереди.

http://www.jinspired.com/products/opencore (коммерческий)

Есть ли техническая причина, по которой вы не можете использовать графический интерфейс? Это просто предпочтение, обусловленное привычкой рабочего процесса? Если нет, тогда вы всегда можете попробовать нашу бесплатную версию JXInsight/Opus Java Edition - высокоэффективное и масштабируемое решение для измерения производительности задержек на уровне кода для быстрого определения точек доступа в приложениях Java и JRuby.

http://www.jinspired.com/products/opus

Примечание. Я являюсь разработчиком продукта обоих продуктов.

Ответ 5

Если вы хотите его профилировать и контролировать. Вы можете использовать Jvisualvm.

с сайта приложения:

ОПИСАНИЕ Java VisualVM - это интуитивно понятный графический пользовательский интерфейс, который предоставляет подробную информацию о приложениях на основе Java (приложения Java), пока они работают на данной виртуальной машине Java (JVM *). Имя Java VisualVM происходит от того, что Java VisualVM визуально отображает информацию о программном обеспечении JVM.

Java VisualVM объединяет несколько средств мониторинга, устранения неполадок и профилирования в один инструмент. Например, большинство функций, предоставляемых автономными инструментами jmap, jinfo, jstat и jstack, были интегрированы в Java VisualVM. Другие функциональные возможности, такие как некоторые из предложенных инструментом JConsole, могут быть добавлены в качестве дополнительных плагинов.

EDIT: Как вы хотите использовать терминальный подход. Перейдите по этой ссылке Запуск Javadump. Он описывает создание java-дампа.