如果有空闲堆空间,为什么会出现OutOfMemoryError?
这个问题是与此相关的one:如果有空闲堆空间,为什么会出现OutOfMemoryError?
如果我有一个堆转储报告线程95%
留在wait
或parked
状态,并且有以防万一750MB的可用堆内存怎么可能得到一个java.lang.OutOfMemoryError
?
由于根据报告似乎有免费的堆,这对我来说似乎很奇怪!
任何人都可以帮我解释一下吗?
你正在使用什么样的操作系统?它是32位还是64位?您的JDK 32位或64位?总共需要多少堆空间? 尝试运行更多最大堆空间的程序。当我想要转换一个XML文件时,我遇到了同样的问题。您只需设置以下参数:
在你的shell:
java -Xmx1024m -jar yourfile.jar
你能接受工作答案吗?为你做了什么? – 2012-07-27 11:12:17
OOME可以通过堆溢出或堆栈溢出引发。 所以如果你确定堆足够了,我推荐检查堆栈大小。
我认为你的意思是缺少堆栈空间,堆栈溢出是由递归级别太多造成的。 – 2012-07-27 08:44:05
如果堆栈空间太小,我不会得到'StackOverflow'错误而不是'OutofMemoryError'? http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp – Jim 2012-07-27 09:26:40
如下面的链接,OutOfMemoryError可以通过堆栈大小问题引发。 https://kr.forums.oracle.com/forums/thread.jspa?threadID=605890 – nurinamu 2012-07-27 10:05:52
显示整个错误信息...... – beny23 2012-07-27 08:04:05
@ beny23:一切都在文章中,我链接到的 – Jim 2012-07-27 08:07:20
可能重复[如何检测因为OutofMemoryError?](http://stackoverflow.com/questions/11682726/how-to-detect-the-cause-of-outofmemoryerror) – beny23 2012-07-27 08:18:25