2015-11-20 50 views
0

我一直有問題,我的webapp。我的堆內存峯值達到接近最大值大約30分鐘,並使我的系統崩潰。堆內存峯值問題

我已經搜索並嘗試幾乎所有的東西。我一直在使用Java VisualVM,jconsole和Oracle Java Mission Control監控我的堆內存(我知道它已經過時)。

所以我曾嘗試,直到知道:

  1. 監控的堆內存,看看是否有在特定的時間運行特定的線程,它的峯值內存。 (情況並非如此,因爲它在特定時間沒有特定的峯值。)

2.增加我的堆內存大小。

  • 操作指導:
  • http://karunsubramanian.com/websphere/top-4-java-heap-related-issues-and-how-to-fix-them/

    所以我的問題是:

    是否有任何工具,可以幫我看看,如果我有一個內存泄漏和從哪裏? 有沒有人遇到同樣的問題。 任何關於如何管理這類問題的指針。

    順便說一句我在這方面很新,所以請客氣。 Windows Server 2012中 JAVA 7

    如果您需要更多的信息,

    的Tomcat 7請評論。

    回答

    0

    您需要配置jvm以在發生內存溢出時創建堆轉儲。

    -XX:+HeapDumpOnOutOfMemoryError 
    

    然後分析堆轉儲找到什麼類使用

    +0

    我已經做到了這一點的記憶,我應該尋找在類或保留內存的大小? –

    +0

    保留內存作爲「小」類可以阻止其他幾個類的gc。找到支配者 – benbenw

    +0

    它是不是指向任何泄漏可疑(相同對象佔用的內存比例較高)? –