2016-04-08 2 views
2

В чем разница между подключением профилировщика jvm (в моем случае, его jprofiler) с использованием jvm agentlib и динамического присоединения к процессу?Разница между прикреплением jvm-профилировщика с использованием агента vs process

Помимо преимуществ статического и динамического профилирования, любая другая заметная разница между обоими подходами?

Предположим, что профайлер работает локально на сервере приложений.

+1

Эта информация: http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html Интерфейс командной строки против стартовых агентов После того, как VM Startup поможет каким-либо образом ? – Bax

ответ

2

Как сказал Стивен, прикрепить режим не доступен для Java 1.5 и ниже (прикрепить был введен в Java 6) и запуск приложения может только профилируются путем добавления параметра -agentlib VM. Ограничение для удаленного профилирования не применяется к JProfiler, где вы можете использовать инструмент командной строки jpenable для подготовки удаленного процесса для профилирования.

Основным недостатком режима присоединения является то, что профайлер не видит всех классов по мере их загрузки. Вместо этого, для классов интересов, он должен восстановить эти классы. Это занимает много времени, и до Java 8 он обременяет PermGen, поэтому профилировщик должен быть более избирательным, когда инструментарий классов сравнивается с тем, когда он присутствует при запуске.

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

Есть еще несколько таких проблем, которые приводят к ограничениям функций в режиме вложения.

1

Преимущества статической (agentlib) крепления профилировщика являются:

  • можно профилировать запуск приложения
  • можно профилировать Java 5 & Java 6 приложений
  • можно профилировать приложения в удаленный JVM

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

Ссылка: NetBeans Разработка приложений с помощью IDE NetBeans версии 8.0, Section 8.9, "Attaching the Profiler"

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