【问题标题】:Out of Memory : Metaspace with java 8内存不足:Java 8 的元空间
【发布时间】:2016-09-02 06:12:05
【问题描述】:

我的产品有 256 MB 的 RAM。我已将 java 6 升级到 java 8。 然后我开始面临与 java 8 相关的内存问题。 Java 8 的内存消耗随着时间的推移而增加 使用相同的代码,内存消耗在 java 6 中是稳定的 我对元空间、java8 进行了很多探索,并在下面找到了元空间参数。

我尝试了以下组合并出现内存不足错误

1.MaxMetaspaceSize 50M MaxMetaspaceFreeRatio 60M MinMetaspaceFreeRatio 50M

2.MaxMetaspaceSize 30M

3.MaxMetaspaceSize 40M

4.MaxMetaspaceSize 50M

5.MaxMetaspaceSize 80M

但在 2 到 3 小时后,出现内存不足元空间错误。

谁能解释一下元空间选项 MaxMetaspaceSize,MaxMetaspaceFreeRatio ,MinMetaspaceFreeRatio 是什么?

如何确定合适的尺寸? 这些值的正确组合是什么,以避免生产中的内存不足实例并减少内存消耗?

【问题讨论】:

  • 我不明白,为什么开发人员一直在搞这些选项。默认为无限元空间。因此,如果您不知道哪些限制是最好的,请不要指定任何限制。
  • 如果我们不指定 limit ,最终可能会导致巨大的本机内存分配。
  • 是的,如果你指定一个限制,它可以以 OutOfMemoryError 结束。选择是你的……
  • 如果我没有设置任何元空间属性,即使 GC 没有从元空间清理/卸载类,元空间也会继续增加。为什么会这样? GC运行时我应该怎么清理元空间?
  • 你没有。如果软件存在内存泄漏,则没有 JVM 选项可以解决该问题。你必须修复软件。

标签: java-8 jetty-8 metaspace java-memory-leaks


【解决方案1】:

问题已解决。 发现 JAXB 存在已知问题。

  • 使用字符串缓冲区而不是字符串
  • 删除了不必要的 JAXBContext 实例。
  • 参考这个链接

  • Are there any memory utlization issue with JAXB?
  • 【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多