Профилирование против инструментов - Java
-
28-10-2019 - |
Вопрос
Основной вопрос: JVM предоставляет JVMTI, какой нативный API для профилирования и отладки JVM. Инструментация JVM также делает то же самое (это правильно?). Если да, какова разница между обоими?
Решение
Я не думаю, что инструментария - это JVMTI - это суперсет инструментов. Поскольку оба они могут использоваться независимо.
JVMTI основан на событиях, и в случае обработчиков событий мы можем получить необходимую информацию о JVM.
Инструментация - это то, что мы изменяем байт -код и, следовательно, в свою очередь добавляем дополнительный кусок кода во время выполнения в требуемом месте в классе, прежде чем он загрузится в JVM. Этот дополнительный кусок кода при выполнении поможет собрать необходимую информацию для профилировщика.
Инструменты могут быть достигнуты с помощью различных сторонних банок, как ASM.
В соответствии с моими знаниями и опытом, оба они предназначены для профилирования Java, а не для местного профилирования.
Возможно, нужно прочитать больше документов и выполнить разные образцы для лучшего понимания.
Другие советы
JVMTI дает все функции, которые нуждаются в отладчике, однако, если вы хотите больше, чем то, что предоставляет JVMTI, вам необходимо использовать инструменты.
JVMTI - это базовая функциональность, которая предоставляет все виды событий для отладки, профилирования и т. Д. ... Одна из областей, которые она предоставляет, - это доступ к классам переосмысления (и переопределения). java.lang.instrument - это обертка Java на вершине JVMTI, которая обеспечивает хороший, простой, доступный способ попадания на мероприятия по загрузке класса.
Думайте о jvmti как о чистом суперсете java.lang.instrument, но требует, чтобы пользователь писал C -код.