• OutOfMemoryError:GC overhead limit exceeded


    今天上线系统后,发现java进程疯狂占用CPU资源,达到百分之六、七百,直接导致服务无法响应请求。但是查看mysql的服务,并没有出现死锁的情况,推测是Java代码里面有问题。
    过了一段时间就爆出GC overhead limit exceeded的错误,也就是说程序耗尽了所有可用的内存,GC也清理不了
    默认情况下, 如果GC花费的时间超过 98%, 并且GC回收的内存少于 2%, JVM就会抛出这个错误。

    注意, java.lang.OutOfMemoryError: GC overhead limit exceeded 错误只在连续多次 GC 都只回收了不到2%的极端情况下才会抛出。假如不抛出 GC overhead limit 错误会发生什么情况呢? 那就是GC清理的这么点内存很快会再次填满, 迫使GC再次执行. 这样就形成恶性循环, CPU使用率一直是100%, 而GC却没有任何成果. 系统用户就会看到系统卡死 - 以前只需要几毫秒的操作, 现在需要好几分钟才能完成。

  • 相关阅读:
    lnmp分离部署
    Nginx
    Keepalived脑裂监控
    KVM虚拟化
    mysql中间件proxysql实现mysql读写分离
    分离部署lnmp
    nginx
    Keepalived脑裂监控
    keepalived高可用
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/mrnx2004/p/12163561.html
Copyright © 2020-2023  润新知