Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top