2013-02-17 35 views
4

我正在調查分析器如何在內部工作。Java分析器如何在內部工作?

似乎有一箇舊的API命名爲JVMPI,以及基於java.lang.instrument的「新」API。我有這樣的想法,即profiler處理所有類的字節碼,並將通過套接字信息調用的鉤子插入給定程序的開放點,以便與分析器建立通信。這是標準方法嗎?他們在做法上差異很大嗎?

感謝

回答

2

作爲參考, 「JVM TI在JDK 5.0中引入的。JVM TI替代Java虛擬機分析器接口(JVMPI)和Java虛擬機調試接口(JVMDI)。」標準剖析器jvisualvm廣泛使用API​​,例如,執行和監視垃圾回收,如建議here。 (JMX)是常用的通信層。

1

我不是這方面的專家,但看起來JVMPI和JVMTI的工作方式不同。

  • JVMPI似乎在代理程序處理啓用分析時JVM發出的「事件」。 JVM中內置事件發射邏輯。

  • JVMTI似乎通過讓代理將字節碼注入到加載的方法中來工作(用於分析)。

(這是從相應規格的簡要讀取,如上面聯繫在一起的。)