2015-02-08 76 views
-1

我開發了一個具有超過3000個源文件的項目;當我想在幾分鐘後運行我的項目時,它會給我帶來如java.lang.OutOfMemoryException: java heap space的錯誤。我還通過右鍵單擊和VM選項增加了我的項目的內存我給了1024MB我的PC上有兩個2GB。OutOfMemoryException:java堆空間

+6

你知道代碼可以處理更多的內存嗎? 你的項目可能只是越野車,並有內存泄漏或無限遞歸。 – Kacy 2015-02-08 17:59:49

+0

或者也許代碼需要大緩衝區,錯誤,數組。或者也許它有一些可調參數來控制它抓取的數量。 3000班並不是那麼多。這兩天都沒有2GB內存...... – 2015-02-08 18:01:17

+0

你檢查過堆內存大小嗎? – 2015-02-08 18:04:59

回答

0

正如您可能知道的,您可以使用java -Xms<initial heap size> -Xmx<maximum heap size>來增加JVM的內存。

但是這只是推遲了這個問題,因爲在您的應用程序中可能存在內存泄漏導致堆溢出的地方。我建議你使用像Netbeans Profiler這樣的工具,它可以幫助你找出發生內存泄漏的地方。 Netbeans Profiler將允許您查看對象的創建位置,發生垃圾回收的位置等。

+0

我如何找到我爲項目使用NetBeans的內存泄漏。發生此問題時,我想清理並生成項目,它給出outOfMemory錯誤。請幫助我。 – Adolf 2015-02-09 15:35:39

0

這可能是應用程序只是分配大量內存或存在實際泄漏。我的方法是使用內存分析器(如Eclipse MAT)來查看哪些對象佔用了最多的內存。

如果它們都有效,那麼你可能需要增加堆大小空間。雖然我曾與5000多個類的Web應用程序項目512MB堆,所以我不懷疑這是一個內存泄漏。

您還應該在代碼中查找ByteArrayOutputStream的實例,它們也傾向於佔用大量內存。