4

我正在研究探查器如何在内部工作。

似乎有一个名为JVMPI的旧 API ,以及一个基于java.lang.instrument. 我的想法是分析器检测所有类的字节码,并将通过套接字信息调用的钩子插入给定程序的开放点,从而与分析器建立通信。这是标准方法吗?他们的方法有很大不同吗?

谢谢

4

2 回答 2

2

作为参考,“ JVM TI是在 JDK 5.0 中引入的。JVM TI 取代了 Java 虚拟机分析器接口 (JVMPI) 和 Java 虚拟机调试接口 (JVMDI)。” 标准分析器jvisualvm广泛使用 API,例如执行和监视垃圾收集,如此处建议的那样Java Management Extensions (JMX) 是通用的通信层。

于 2013-02-17T08:08:52.820 回答
1

我不是这方面的专家,但似乎 JVMPI 和 JVMTI 的工作方式不同。

  • JVMPI 似乎通过代理处理启用分析时 JVM 发出的“事件”来工作。似乎事件发出逻辑是内置在 JVM 中的。

  • JVMTI 似乎通过让代理在加载方法时将字节码注入方法来工作(用于分析)。

(这是对相应规格的简要阅读,如上链接。)

于 2013-02-17T13:19:54.420 回答