【问题标题】:How can I correct a "Java heap space - Out of Memory" error如何更正“Java 堆空间 - 内存不足”错误
【发布时间】:2014-05-07 16:40:40
【问题描述】:

我目前正在针对一个相当大的数据集运行我的系统并且遇到了错误。 '内存不足。 Java 堆空间'。

有没有办法解决这个问题,还是只是数据集太大而无法使用?

【问题讨论】:

  • 信息不足。它是您要加载到内存中的文件吗?如果是这样,请尝试使用 bufferedReader。
  • 问题太模糊了,需要根据可以分配的heapsize在heap中保存数据,
  • 你没有给我们太多的继续。但一般来说,处理大型数据集有多种方法。
  • 您可以通过在启动时传递 -Xmx<size>(例如 -Xmx4G 最大 4GB)参数来增加 JVM 可用的内存量。
  • 在这里查看问题和答案:stackoverflow.com/questions/3030263/…

标签: java memory heap-memory


【解决方案1】:

一般来说,你可以

  • 给它更多内存,例如增加最大堆大小,但不要给它超过大约 90% 的主内存。顺便说一句,默认值是主内存的 25%,最高 32GB。
  • 优化代码,使其使用更少的内存,例如使用内存分析器。您可以使用更高效的数据结构或一次将部分数据加载到内存中。
  • 分解数据,使其一次只处理一部分。

【讨论】:

    【解决方案2】:

    如果不是数据集占用了内存,则可能是您在对象处于非活动状态时没有释放它们。

    这通常是由于对非常大的对象或大量对象在不再需要之后长时间放置的引用保持不变。这很可能是静态变量的引用,但它也可以是对仍处于活动状态的方法中的大型临时变量(例如 largeStringBuilderobjects)的引用。

    【讨论】:

      猜你喜欢
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2019-10-09
      相关资源
      最近更新 更多