相关疑难解决方法(0)

java.lang.OutOfMemoryError:超出了GC开销限制

我在一个程序中得到这个错误,该程序创建了几个(几十万个)HashMap对象,每个对象有几个(15-20)个文本条目.在提交到数据库之前,必须收集这些字符串(不会分解成较小的数量).

根据Sun的说法,如果在垃圾收集中花费了太多时间,则会发生错误:如果超过98%的总时间花在垃圾收集上,并且不到2%的堆被恢复,则会抛出OutOfMemoryError. ".

显然,可以使用命令行将参数传递给JVM

  • 通过"-Xmx1024m"(或更多)增加堆大小,或
  • 通过"-XX:-UseGCOverheadLimit"完全禁用错误检查.

第一种方法工作正常,第二种方法在另一个java.lang.OutOfMemoryError中结束,这次是关于堆的.

所以,问题:对于特定的用例(即几个小的HashMap对象),是否有任何编程替代方案?例如,如果我使用HashMap clear()方法,问题就会消失,但HashMap中存储的数据也会消失!:-)

StackOverflow中的相关主题也讨论了该问题.

java heap heap-memory hashmap g1gc

317
推荐指数
10
解决办法
59万
查看次数

使用HeapDumpOnOutOfMemoryError参数进行JBoss的堆转储

有人告诉我,我可以将-XX:+HeapDumpOnOutOfMemoryError参数添加到我的JBoss启动脚本的JVM启动选项中,以便在我们的应用程序中出现内存不足错误时获取堆转储.我想知道这些数据被丢弃的位置?它只是到控制台,还是一些日志文件?如果仅仅是控制台,如果我没有通过控制台登录Unix服务器怎么办?

java heap jboss memory-leaks

177
推荐指数
3
解决办法
24万
查看次数

PermGen实际上代表什么?

我知道PermGen是什么,它用于什么,它失败的原因,如何增加它等等.

我不知道的是PermGen实际上代表什么.永久......根......什么?

有谁知道PermGen实际上代表什么?

java permgen

119
推荐指数
5
解决办法
16万
查看次数

标签 统计

java ×3

heap ×2

g1gc ×1

hashmap ×1

heap-memory ×1

jboss ×1

memory-leaks ×1

permgen ×1