Профилирование против Инструментирования - Java - PullRequest
4 голосов
/ 15 июня 2011

Основной вопрос: JVM предоставляет JVMTI, который является собственным API для профилирования и отладки JVM.Инструментарий JVM также делает то же самое (это правильно?).Если да, в чем разница между ними?

Ответы [ 3 ]

3 голосов
/ 17 июня 2011

Я не думаю, что Instrumentation - это JVMTI, а Superset of Instrumentation ... поскольку оба они могут использоваться независимо.

JVMTI основан на событиях, и в обработчиках событий мы можем собирать необходимую информацию о JVM.

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

Инструментарий может быть достигнут с помощью различных сторонних банок, таких как ASM.

Согласно моим знаниям и опытуОба они предназначены для профилирования Java, а не для нативного профилирования.

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

0 голосов
/ 15 июня 2011

JVMTI - это базовая функциональность, которая предоставляет всевозможные события для отладки, профилирования и т. Д. Одна из областей, которые она предоставляет, - это доступ к классам перехвата (и переопределения). java.lang.instrument - это Java-оболочка поверх JVMTI, которая обеспечивает хороший, простой и доступный способ получения информации о событиях загрузки классов.

Думайте о JVMTI как о чисто расширенном наборе java.lang.instrument, но он требует от пользователя написания кода на языке C.

0 голосов
/ 15 июня 2011

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

...