您的位置:首页 > 编程语言 > Java开发

java.lang.OutOfMemoryError: GC overhead limit exceeded

2017-02-10 14:47 495 查看
    如果GC效率太低,Stop the world的时间太长,业务系统的性能将会受到严重影响。根据GC占用系统的时间,以及释放内存的大小,虚拟机会评估GC的效率,一旦虚拟机认为GC的效率过低,就可能直接抛出OOM异常。需要达到以下条件:

    1.GC的时间是否超过98%;

    2.老年代释放的内存是否小于2%;

    3.eden区释放内存是否小于2%;

    4.是否连续最近5次GC都出现上述三种情况(指的是同时出现)

    满足上述所有条件就会抛出:java.lang.OutOfMemoryError: GC overhead limit exceeded

    可以通过配置参数禁止这个错误:-XX:-UseGCOverheadLimit ,但我认为没有必要,如果出现这种问题必然是系统出问题了,如果产生了dump文件,用MAT分析即可;如果当前正在报这个错,且没有产生dump文件,就使用命令手工产生,jmap -dump:format=b,file=/mnt/oom.hprof  [pid] .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: