2015-03-19 72 views

回答

0

java.lang.OutOfMemoryError:Java Heap Space : Usually happens due to lack of system memory(for the JVM), sometimes it can also happen due to memory leaks(programming).

JVM拋出 「OutOfMemoryError錯誤」,當它跑出來的Java堆內存的

要解決的OutOfMemoryError:Java堆空間,(簡單的方法)

increase heap size by setting JVM arguments "-Xms" and -Xmx" - Minimum and Maximum Heap Size

檢查當前值,並增加它像「-Xmx1024M」

如果它沒有解決,那麼它一定是由於內存泄漏(idk更多關於如何修復內存泄漏) 爲了更好地理解, fer:Java Heap Space

+0

尊敬的專家!感謝您的建議。 – 2015-03-19 10:40:53

1

無論您運行的是哪種平臺,無論是Linux還是Windows或任何其他平臺,您都可以擁有有限的堆。 Java分配有限的內存以運行程序。這個內存空間可以分爲兩個區域。

  1. 堆:存儲對象。
  2. 存儲空間:存儲用戶類的元數據。

你可以通過參數 初始化堆和PermSpace「-XX:MaxPermSize參數」 你可以通過參數 「-Xmx」 初始化堆大小,如果你不初始化JVM將分配默認內存到您的應用。

您可以選中使用Java Memory Profiler來檢查程序的哪個部分在內存中使用更多空間。

2

爲了找到內存異常的原因,您可以採用應用程序的線程轉儲。爲了獲得一個線程轉儲,執行命令:

kill -3 <process_id> 

其中<process_id>是你process.You的PID可以找到它:

ps aux | grep java 

或可用的任何其他工具。線程轉儲將被髮送到標準輸出流,而不終止進程。所以,你可以分析日誌。 您還可以使用以下JVM選項:

-XX:OnOutOfMemoryError="kill -3 %p" 

在每一個OutOfMemory錯誤自動生成你的進程的線程轉儲。

相關問題