2010-07-25 25 views
1

我想分析程序的內存使用情況,但我不斷收到堆棧溢出錯誤。是netbeans java profiler如何在〜64mb時出現堆溢出錯誤?

我使用NetBeans內存設置如下:在

我使用
-J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-XX:MaxPermSize=200m 

該項目的內存設置如下:

-Xms256m -Xmx512m 

Here is screen shot

我不確定哪裏有65 MB來自哪裏。有人可以幫幫我嗎?

謝謝 GRAE

PS:NetBeans的6.5

+0

您使用的是哪個版本的Java,以及您的盒子中有多少物理內存? – 2010-07-25 21:42:55

回答

0

你沒有把-Xmx(最大堆大小)針對NetBeans本身,默認爲64MB。

+0

不完全。 NetBeans動態調整-Xmx,具體取決於物理內存(例如,在我的4GB計算機上,它將最大堆數設置爲768M) – 2011-07-13 18:50:21

0

此65M上限來自您的應用程序。它與NetBeans無關。你需要增加應用程序的最大堆以擺脫這個OOME。

此外,倖存的幾代人的數量在不斷增長,表明內存泄漏很可能。

+0

您知道有關Netbeans如何實現這一點的任何參考嗎?我的意思是找到泄漏。從我的研究中,我認爲這是一個類加載器問題。 – 2011-07-12 13:07:28

+0

首先,當您的應用程序崩潰時,它應該生成一個堆轉儲,它可以直接在NetBeans或任何其他heapwalker(MAT,例如。)中打開。在那裏你可以本地化泄漏的課程。 然後嘗試http://netbeans.org/kb/articles/nb-profiler-uncoveringleaks_pt1.html查明泄漏實例的分配位置。 – 2011-07-13 18:44:33

+0

感謝您的鏈接 – 2011-07-21 21:40:51