【问题标题】:Why an OutOfMemoryError here if there is free heap space?如果有可用的堆空间,为什么会出现 OutOfMemoryError?
【发布时间】:2012-07-27 08:02:35
【问题描述】:

这个问题和这个one有关:

如果我有一个堆转储报告指出95% 的线程处于waitparked 状态,并且有大约750MB 的可用堆内存可用,如何获得java.lang.OutOfMemoryError
由于根据报告似乎有空闲堆,这对我来说似乎很奇怪!
谁能帮我解释一下?

【问题讨论】:

  • 显示整个错误信息...
  • @beny23: 一切都在我链接到的帖子中
  • @beny23:但这不是同一个问题。为什么是重复的?
  • 您说“所有内容都在您链接到的帖子中”,因此编辑原始问题会更容易。无论如何,我认为现有的 695 个线程可能是它失败的原因,因为它无法再创建了。

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


【解决方案1】:

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

在你的外壳中:

java -Xmx1024m -jar yourfile.jar

【讨论】:

  • 你能接受有效的答案吗?有什么对你有用的吗?
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 2012-04-09
  • 1970-01-01
相关资源
最近更新 更多