【问题标题】:Java 8: OutOfMemory Error, change MaxPermSize? [duplicate]Java 8:OutOfMemory 错误,更改 MaxPermSize? [复制]
【发布时间】:2016-02-28 04:53:58
【问题描述】:

我正在使用Java 8 运行我的应用程序,但是我收到以下错误:

java.lang.OutOfMemoryError: GC overhead limit exceeded

我尝试将MaxPermSize512m 增加到 768,但我仍然遇到同样的错误。我该如何解决这个问题?

【问题讨论】:

  • 考虑看看this post.
  • JVM v8 中的 MaxPermSize 不起作用 - 没有 PermGen。
  • 感谢您的回复,如果没有 PermGen 我应该如何解决这个问题?
  • 查看我的回答和链接的问答

标签: java memory memory-management java-8


【解决方案1】:

作为@Ajan cmets,Java 8 不再有“permgen”堆空间,该选项将被忽略。

但这根本不是 permgen 问题。事实上,这很可能是 Java 主堆已满的迹象。如果 JVM 检测到 GC 在最后几个 GC 周期中占用的总 CPU 时间的比例过大,则会引发此异常。这通常是因为堆快满了,而 GC 的运行越来越频繁。

因此,该问题的“快速解决方案”是使用-Xmx... 选项增加主堆大小。但是,如果真正的问题是您有内存泄漏,那么这只是推迟不可避免的事情。除非您已经了解为什么您的应用程序使用大量内存,否则您可能应该开始寻找内存泄漏。

【讨论】:

  • 感谢回复,-Xmx 已经设置为 1024 了,要不要再调高一点?我该怎么办?
  • 如果您已经增加了-Xmx,我建议您在再次增加之前寻找潜在的内存泄漏。
  • 谢谢,我会的,但我想看看这个修复在此期间是否有效,你建议将它增加到什么?
  • 如果问题是内存泄漏,则无关紧要。这不是内存泄漏......然后“大到足以运行您的应用程序”。但“正确”的答案还取决于您使用的是 32 位还是 64 位 JVM,以及有多少可用 RAM。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 2016-11-14
  • 2017-10-10
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多