2012-07-27 79 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

相关问题