2011-04-05 71 views
0

我有一個應用程序運行相當長的分析(大量的數字處理),所以運行應用程序一次需要大約3-4小時,充分利用所有的核心。現在我非常確定我的代碼不是水密的,所以我想分析並尋找潛在的弱點。在jvisualvm中可以同時執行CPU和內存分析嗎?

我一直在閱讀jvisualvm上的一些內容,並且還對它進行了一些調整。然而,它表現爲一個人選擇CPU或內存的剖析,同時this article從的Javalobby有一個有趣的報價在這裏筆者說:

我意識到,無論是CPU和內存概要分析可能已經同時完成,但爲宗旨這篇文章我想讓他們分開。

任何人都可以否認或確認這一點嗎?如果這可能會非常有用,所以我不會一遍又一遍地以不同的模式進行配置。如果這是不可能的,是否可以排隊進行不同的分析分析,以便我可以在一夜之間運行它們?

感謝,

回答

2

不可能一起完成CPU和內存分析,但您可以非常輕鬆地在CPU和內存之間切換,尤其是在使用「採樣器」選項卡時。對於你的情況,我會從簡單的監控開始。看看圖表,你應該能夠知道,如果你有沒有記憶問題。如果你有內存問題,我會嘗試先解決它,並把你的注意力轉向CPU分析。

+0

感謝Tomas。你認爲可以排隊分析事件沒有太多頭痛嗎?還是它要求太多? :) – posdef 2011-04-06 07:22:57

+0

我不確定'排隊分析事件'是什麼意思。你有什麼樣的事件? – 2011-04-06 12:06:58

+0

我想X分鐘CPU分析,Y分鐘內存分析,Z最小採樣等。然而,第二個想法,我意識到,它不是一個真正的聰明的方式去反正.. – posdef 2011-04-06 12:39:49

0

我發現廓往往低估對象分配的成本,所以我通常能夠與CPU性能分析內存分析,因爲我覺得這給出了一個更現實的CPU性能分析結果。 (即使我不看存儲器分析報告)

如果有疑問,我建議你運行CPU配置文件,有和沒有內存分析,你可以得到非常不同的結果。根據我的經驗,這兩項結果都值得優化。 ;)

順便說一句:我使用YourKit,但我不認爲VisualVM在這方面會有很大的不同。

+0

感謝Peter的快速回復,儘管我想我可能在這個問題上不清楚。是否有可能同時運行兩個分析?如果是這樣,怎麼樣? – posdef 2011-04-05 08:44:47

+0

我假設每個人都有一個單獨的按鈕。點擊兩者會發生什麼? – 2011-04-05 08:48:14

+0

是的,它顯示爲從一種類型到另一種類型的配置文件切換。用於初始化儀器的應用程序塊需要很長時間,所以我沒有真正嘗試等待底層應用程序完成執行,因爲正如我所提到的,它幾乎消耗了所有處理器能力(旨在這樣做)需要很長時間才能完成。我希望從類似的經歷中學習社區中的其他人可能有過的經歷(或許有更簡單的例子) – posdef 2011-04-05 09:01:18