2012-07-27 118 views
0

這個問題是與此相關的one如果有空閒堆空間,爲什麼會出現OutOfMemoryError?

如果我有一個堆轉儲報告線程95%留在waitparked狀態,並且有以防萬一750MB的可用堆內存怎麼可能得到一個java.lang.OutOfMemoryError
由於根據報告似乎有免費的堆,這對我來說似乎很奇怪!
任何人都可以幫我解釋一下嗎?

+3

顯示整個錯誤信息...... – beny23 2012-07-27 08:04:05

+0

@ beny23:一切都在文章中,我鏈接到的 – Jim 2012-07-27 08:07:20

+1

可能重複[如何檢測因爲OutofMemoryError?](http://stackoverflow.com/questions/11682726/how-to-detect-the-cause-of-outofmemoryerror) – beny23 2012-07-27 08:18:25

回答

1

你正在使用什麼樣的操作系統?它是32位還是64位?您的JDK 32位或64位?總共需要多少堆空間? 嘗試運行更多最大堆空間的程序。當我想要轉換一個XML文件時,我遇到了同樣的問題。您只需設置以下參數:

在你的shell:

java -Xmx1024m -jar yourfile.jar 
+0

你能接受工作答案嗎?爲你做了什麼? – 2012-07-27 11:12:17

1

OOME可以通過堆溢出或堆棧溢出引發。 所以如果你確定堆足夠了,我推薦檢查堆棧大小。

+3

我認爲你的意思是缺少堆棧空間,堆棧溢出是由遞歸級別太多造成的。 – 2012-07-27 08:44:05

+0

如果堆棧空間太小,我不會得到'StackOverflow'錯誤而不是'OutofMemoryError'? http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp – Jim 2012-07-27 09:26:40

+0

如下面的鏈接,OutOfMemoryError可以通過堆棧大小問題引發。 https://kr.forums.oracle.com/forums/thread.jspa?threadID=605890 – nurinamu 2012-07-27 10:05:52

相關問題