2010-12-16 191 views
3

我們有一個生產Java系統,它比平時使用更多的線程。我想使用kill -3 pid來獲取線程轉儲,並且如果需要,可以使用JConsole在Eclipse MAT中獲得二進制堆轉儲以進行離線分析。在生產系統上生成threaddump的安全性

我在RHEL4上運行Java 1.5.0_10。

這些中的任何一個會如何殺死JVM?在生產垃圾堆時,對它的性能有什麼不利影響?

回答

3

它不會殺死虛擬機,但生成堆轉儲可能會在轉儲過程中凍結JVM,因爲它必須轉儲一致的快照。轉儲完成後,它將恢復所有掛起的線程。所以它不會有破壞性,但會暫時停止處理。

+0

我假設線程轉儲是少了很多昂貴的生產比堆轉儲。它甚至需要暫停VM嗎? – Rich 2010-12-16 13:17:27

+0

@ Rich:很便宜,是的。它仍然需要暫停虛擬機,但它只需要很短的時間就不會注意到它。 – skaffman 2010-12-16 13:18:48

+0

非常感謝:=) – Rich 2010-12-16 13:19:45