基本问题:JVM为JVMTI提供了用于分析和调试JVM的本机API。 JVM工具也做同样的事情(这是正确的吗?)。如果是,两者之间有什么区别?
答案 0 :(得分:3)
我不认为Instrumentation是JVMTI是仪器的超级...因为这两者都可以独立使用。
JVMTI基于事件,在事件处理程序中,我们可以捕获有关JVM的必需信息。
Instrumentation是我们修改字节码的东西,因此在它加载到JVM之前,在运行时在类中的所需位置添加额外的代码片段。执行时,这段额外的代码将有助于收集探查器所需的信息。
仪器可以在ASM等各种第三方jar的帮助下实现。
根据我的知识和经验,这些都是用于Java分析而不是用于Native分析。
可能需要阅读更多文档并尝试不同的样本以便更好地理解。
答案 1 :(得分:0)
JVMTI提供了调试器所需的所有功能,但是如果您想要的更多,那么您需要使用Instrumentation。
答案 2 :(得分:0)
JVMTI是基本功能,为调试,分析等提供各种事件......它提供的一个领域是访问拦截(和重新定义)类。 java.lang.instrument是一个基于JVMTI的Java包装器,它提供了一种很好,简单,易用的方法来获取类加载事件。
将JVMTI视为java.lang.instrument的纯超集,但要求用户编写C代码。