如果存在空闲堆空间,为什么在这里出现OutOfMemoryError?

时间:2012-07-27 08:02:35

标签: java multithreading debugging memory-leaks out-of-memory

此问题与此one

有关

如果我有一个堆转储报告,95%个线程处于waitparked状态,并且有可用的750 MB空闲堆内存,那怎么可能获得java.lang.OutOfMemoryError
根据报告似乎有免费堆,这对我来说似乎很奇怪! 任何人都可以帮我解释一下吗?

2 个答案:

答案 0 :(得分:1)

可以通过堆溢出或堆栈溢出来引发OOME。 因此,如果您确定堆足够,我建议检查堆栈大小。

答案 1 :(得分:1)

您使用的是哪种操作系统?它是32位还是64位?你的JDK 32位是64位吗?总共需要多少堆空间? 尝试使用更多的最大堆空间运行程序。当我想要转换XML文件时,我遇到了同样的问题。您只需设置以下参数:

在你的shell中:

java -Xmx1024m -jar yourfile.jar