2012-06-28 36 views
7

我認爲針對生產JVM運行VisualVM以查看發生了什麼 - 由於某些原因,它開始消耗太多的CPU。VisualVM正在生產中?

所以我想估計所有的風險,必須不會導致JVM失敗。

我在他們的site上看到的唯一可能導致JVM關閉的問題與類共享和-Xshare JVM選項有關,但在服務器模式和/或x64系統中未啓用afaik類共享。

因此,對生產JVM運行VisualVM確實很安全 - 如果不是 - 應考慮哪些風險以及運行VisualVM對JVM有多少負載(CPU /內存)(並對其進行性能分析) )穿上它?

感謝

回答

7

AFAIK的VisualVM可以在生產中使用,但我只用它這是輕負載的服務器上。你可以做的是等待服務減速,稍後再用它來測試它是否有些收藏驚人的大。或者你可以觸發一個堆轉儲並離線分析它。

而且你不能得到方法調用的統計信息不顯著的開銷。 Java 6和7比Java 5更好,但即使是商用分析器,它仍然可能使應用程序減慢30%。

+0

+1用於離線分析 – opyate

+0

離線分析適用於內存泄漏,但它不會給我方法調用的統計信息 –

+0

而且您無法在沒有大量開銷的情況下獲取方法調用的統計信息。 Java 6和7比Java 5更好,但即使是商用分析器,它仍然可能使應用程序減慢30%。 –

2

其實,你可以通過使用堆棧轉儲得到不大量開銷的一些信息。甚至有一個腳本來幫助你做到這一點,在https://gist.github.com/851961

這種類型的分析是侵入性最小的,你可以得到。

+1

堆棧轉儲會提供_some_信息,但對檢測內存泄漏無幫助。堆轉儲更有幫助,但解析它們是一種全新的科學 –