2010-11-11 49 views
1

我遇到了我的應用程序的堆內存問題,我嘗試使用VisualVM來查找內存泄漏。有些東西我無法理解。在標籤「Sampler」中,當我按下Memory按鈕時,我看到幾千個有實例的類。如果我在「Profiler」選項卡中執行同樣的操作,則會看到更少的類,這次它們是「活動類」。如果我查看「監視器」選項卡,我會在Total Loaded上看到超過10,000個課程。 你能幫我嗎? 另外,如果我有一個類的實例超過1個,有什麼方法可以找到更多關於這個實例的信息嗎?VisualVM中的加載類

謝謝。

回答

2

我會建議你做一個heapdump來查看更多信息 - 實時視圖對此不太好。

要做到堆轉儲:

  1. 找到您的應用程序列表(/樹)應用
  2. 右鍵單擊它,並採取堆轉儲

或點擊監視器和「堆轉儲「(最右邊):

+0

我現在有堆轉儲,並在Memory Analyzer中打開它。泄漏可疑測試後,我只有這樣: 類加載器/組件「sun.misc.Launcher $ AppClassLoader @ 0x9750468」佔用9,540,792(74.72%)字節。內存是在「」加載的「java.lang.Object []」的一個實例中累積的。「 你認爲它可能與我的內存泄漏有關,太多的類被加載,而不是卸載?也許你可以建議其他地方看看。 此外,即使我的應用程序現在處於空閒狀態,Class Loaders的數量也是785,並且實例數量超過了250.000。 – Cristian 2010-11-11 12:27:48

+0

嗯,它是什麼樣的應用程序? – dacwe 2010-11-13 12:11:38