Java性能分析器的内部工作原理是什么?

4
我正在调查分析器内部的工作原理。
看起来有一个名为JVMPI的旧API,以及基于java.lang.instrument的“新”API。我认为分析器会将所有类的字节码进行逆向操作,并插入钩子通过套接字调用信息到给定程序的开放点,从而与分析器建立通信。这是标准做法吗?它们在方法上有相当大的不同吗?
谢谢
2个回答

2
供参考,“JVM TI”是在JDK 5.0中引入的。JVM TI替代了Java虚拟机分析器接口(JVMPI)和Java虚拟机调试接口(JVMDI)。标准的分析器{{link2:jvisualvm}}广泛使用该API,例如执行和监视垃圾回收,如这里所建议的那样。Java管理扩展(JMX)是常用的通信层。

1
我不是这方面的专家,但似乎JVMPI和JVMTI的工作方式有所不同。
JVMPI似乎通过代理处理JVM在启用分析时发出的“事件”来工作。似乎事件发射逻辑内置于JVM中。
JVMTI似乎通过在加载方法时将字节码注入到代理中来工作(用于分析)。
(这是从上面链接的规范的简要阅读中得出的结论。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接