【问题标题】:Exception in thread "main" java.lang.OutOfMemoryError, How to find and fix? [duplicate]线程“主”java.lang.OutOfMemoryError 中的异常,如何查找和修复? [复制]
【发布时间】:2011-02-28 10:26:00
【问题描述】:

我正在尝试编写一个填字游戏创建者。使用给定的字典 txt 文件和给定的模式 txt 文件。基本思想是使用DFS算法。当字典文件很大(大约 50000 个单词)时,问题就开始了。然后我收到:

线程“主”java.lang.OutOfMemoryError 中的异常:超出 GC 开销限制

我知道我的程序中有一部分会浪费内存,但我不知道它在哪里,如何找到它以及如何修复它

【问题讨论】:

标签: java out-of-memory


【解决方案1】:

真的会浪费内存吗?如果您正在加载一个相当大的字典,那么您可能只是想增加 JVM 内存设置(JVM 有一个最大内存分配 - 取决于您的平台,并且可以配置)。

例如

$ java -Xmx512m ....

会将JVM的最大内存分配增加到512m。

如果您认为您有内存泄漏(由于引用未释放而导致垃圾收集未启动),则可能需要使用诸如 YourKit 之类的分析器。请注意,这不是免费的,但试用版可能会帮助您解决问题。

【讨论】:

  • 嘿,我已经尝试增加 JVM 内存.. 你有什么建议吗?
  • 你试过分析它吗?
  • 抱歉我的无知,什么是分析?
  • 使用某种工具(例如 YourKit)运行程序并获取统计数据/指标,以便您可以确定瓶颈(例如内存消耗)在哪里。
【解决方案2】:

有些时候,我看到人们在循环中初始化变量,比如

While(condition){

    String s="tttt";

}

应该避免这种情况,因为它会浪费大量内存。

【讨论】:

  • 它不一定会浪费内存(你的例子肯定不会,因为字符串文字是池化的)。它甚至可以提供帮助,因为年轻对象的垃圾收集比收集旧对象更便宜。
  • 非常感谢..这是我不知道的事情。它真的让我很开心。
【解决方案3】:

这是一个棘手的问题。我遇到过一次或两次,增加堆大小没有帮助。使用 VM 设置解决它 - 您甚至可能想要减小堆大小(它曾经对我有用)。您可能还想测试不同的垃圾收集器,我已经成功使用了G1 collector

关于如何避免这个错误的一般建议也很难(或者当我研究这个问题以解决我自己的问题时,我觉得是这样)。 High infant mortality 可能不错,因为收集新物品比旧物品便宜。

【讨论】:

    【解决方案4】:

    大字典......嗯......是否有绝对要求将其直接存储在jvm的内存中?

    像我这样的懒人会将其存储在数据库中(甚至可能存储在内存中? - 例如超音速),将搜索列表的责任转移到数据库中,而我的程序则致力于创建有趣的对称黑白方块组合:)

    只是一个想法。

    【讨论】:

      【解决方案5】:

      要解决这个问题(在基于 linux 的操作系统中),请执行以下操作

      1)增加内存(这样这个问题就不会经常出现了)通过在

      中配置“domain.xml”

      /glassfish/domain/domain1/config

      搜索

      <jvm-options>-XX:MaxPermSize=

      set it to higher value eg- 198m or 256m

      2) 杀死 glassfish 进程以释放它正在运行的端口(在我的例子中是 8686) 打开终端(在基于 linux 的操作系统中)并输入 -

      sudo netstat -npl | grep 8686

      这将导致类似..

      tcp6 0 0 :::8686 :::* LISTEN 3452/java

      下次使用

      kill -9 3452 杀死该进程(在本例中为 3452)

      现在尝试启动 glassfish,它应该会启动。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-15
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        相关资源
        最近更新 更多