我在linux機器上遇到以下錯誤。需要知道「OutOfMemoryError:Java堆空間」的根本原因
Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space
並且其中一個端口8080正在不時地等待。
請提出問題的根本原因。
我在linux機器上遇到以下錯誤。需要知道「OutOfMemoryError:Java堆空間」的根本原因
Exception in thread "http-8080-Processor17" java.lang.OutOfMemoryError:Java Heap Space
並且其中一個端口8080正在不時地等待。
請提出問題的根本原因。
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
無論您運行的是哪種平臺,無論是Linux還是Windows或任何其他平臺,您都可以擁有有限的堆。 Java分配有限的內存以運行程序。這個內存空間可以分爲兩個區域。
你可以通過參數 初始化堆和PermSpace「-XX:MaxPermSize參數」 你可以通過參數 「-Xmx」 初始化堆大小,如果你不初始化JVM將分配默認內存到您的應用。
您可以選中使用Java Memory Profiler來檢查程序的哪個部分在內存中使用更多空間。
爲了找到內存異常的原因,您可以採用應用程序的線程轉儲。爲了獲得一個線程轉儲,執行命令:
kill -3 <process_id>
其中<process_id>
是你process.You的PID可以找到它:
ps aux | grep java
或可用的任何其他工具。線程轉儲將被髮送到標準輸出流,而不終止進程。所以,你可以分析日誌。 您還可以使用以下JVM選項:
-XX:OnOutOfMemoryError="kill -3 %p"
在每一個OutOfMemory錯誤自動生成你的進程的線程轉儲。
尊敬的專家!感謝您的建議。 – 2015-03-19 10:40:53