2017-08-30 167 views

回答

3

根據我的經驗,除非您使用探查器,否則不會顯着減速。使用Profiler模式,這是您的過濾器問題,無論性能影響是否顯着。採樣器是一個更安全的選擇,但是您必須注意,啓用任何一個都會觸發一些熱代碼替換,這會導致系統在短時間內無法使用(並且可能會觸發該代碼:JDK7 Application is getting slow after some Uptime)。

當然,如果您只想獲得基本信息(內存,cpu-graph,gc和線程數),其影響會更低。

我的答案有多確定?到目前爲止,我已經使用JVisualVM,JProfiler和YourKit近10年了。我們在客戶的產品代碼(常規網絡應用程序)中使用yourkit中的採樣/監控模式(與jvisualVM的功能基本相同)來分析性能錯誤。它沒有任何明顯的影響。但是,如果您只需要基本的系統監控,則可能會有更合適的產品需要考慮,比如java旋律(https://github.com/javamelody/javamelody/wiki)或kieker(http://kieker-monitoring.net/)。

0

這一切都取決於你在做什麼,性能影響的實際程度很難確定。

如果您通過JVM的MXBeans監視某個GC,它的影響很小,如果您經常監視它,它會產生很大的影響。

如果您需要調查與CPU相關的問題,抽樣可以提供一種簡單的機制來識別瓶頸,並且對性能影響最小。

+0

Thx。我剛纔澄清了這個問題。這是關於cpu,內存,gc和線程的簡單監控。 –

2

是的,它會影響您的JVM性能。這取決於很多因素。如果您只是訪問MBean屬性或調用操作,那麼影響非常小。但只要啓動CPU /內存採樣器或分析器,它就會顯着增加影響。有多顯着?讓我們來看看。採樣的

對性能的影響:

Visual VM Screenshot

連VisualVM的一個簡單的程序,睡在啓動時(不執行任何操作的話)。所以主線程在睡覺。我啓動了CPU採樣器60秒。總CPU時間爲60秒的讀數爲5640ms(5.64秒)。

這是我使用本地機器連接時沒有任何加密。當您使用SSL(必須用於生產環境)添加加密時,影響會進一步增加。

相關問題