2013-07-12 53 views
4

我不太明白通過attach api「附加」到另一臺虛擬機的意思。我讀過每個Java程序都在自己的虛擬機上運行(請參閱here)。那麼在一個程序的內存中究竟發生了什麼,以便「附加」到另一個jvm進程,以便它可以訪問其他虛擬機數據,如MBeanServer?一臺虛擬機的字節碼實際上是否向另一臺虛擬機調用特殊請求以獲取訪問內存的權限,或者是從內存中卸載的第一臺虛擬機,然後這兩組代碼共享一臺虛擬機?如果有人能夠從內存觀點/虛擬機協商步驟(如果這就是它所稱的)來澄清這個附件的細節,我將不勝感激。謝謝!JVM連接API虛擬機。 「附加」是什麼意思?

回答

1

解釋一個jvm與另一個jvm連接的場景的完美示例是使用Java Profiler。 Profiler基本上用於瞭解另一個jvm的性能分析。應用程序正在審查被附加到profiler jvm,它反映了堆/棧以確定有關被檢查的jvm的不同信息。

標準剖析器jvisualvm廣泛使用JVM TI API來執行和監視垃圾收集。 Java Management Extensions(JMX)被用作通用通信層。

+1

我的問題是關於「附加」的含義。 tcp套接字是否打開,序列化是否發生,被連接的vm是否必須「批准」試圖連接到它的vm?爲了讓一臺虛擬機連接到另一臺虛擬機,引擎蓋下正在發生什麼? –

+0

這取決於Attach API實現(這意味着您應該使用相同的Java二進制文件來運行兩個程序以最大限度地減少差異)。 –