此问题与此one:
有关如果我有一个堆转储报告,95%
个线程处于wait
或parked
状态,并且有可用的750 MB空闲堆内存,那怎么可能获得java.lang.OutOfMemoryError
?
根据报告似乎有免费堆,这对我来说似乎很奇怪!
任何人都可以帮我解释一下吗?
答案 0 :(得分:1)
可以通过堆溢出或堆栈溢出来引发OOME。 因此,如果您确定堆足够,我建议检查堆栈大小。
答案 1 :(得分:1)
您使用的是哪种操作系统?它是32位还是64位?你的JDK 32位是64位吗?总共需要多少堆空间? 尝试使用更多的最大堆空间运行程序。当我想要转换XML文件时,我遇到了同样的问题。您只需设置以下参数:
在你的shell中:
java -Xmx1024m -jar yourfile.jar