教你写Bug,常见的 OOM 异常分析( 五 )


不同于其他的 OOM 错误,Killprocessorsacrifice child 错误不是由 JVM 层面触发的,而是由操作系统层面触发的 。
9.1 原因分析默认情况下,Linux 内核允许进程申请的内存总量大于系统可用内存,通过这种“错峰复用”的方式可以更有效的利用系统资源 。
然而,这种方式也会无可避免地带来一定的“超卖”风险 。例如某些进程持续占用系统内存,然后导致其他进程没有可用内存 。此时,系统将自动激活 OOM Killer,寻找评分低的进程,并将其“杀死”,释放内存资源 。
9.2 解决方案

  • 升级服务器配置/隔离部署,避免争用
  • OOM Killer 调优 。
最后附上一张“涯海”大神的图
教你写Bug,常见的 OOM 异常分析

文章插图
 
涯海
参考与感谢《深入理解 Java 虚拟机 第 3 版》
https://plumbr.io/outofmemoryerror
https://yq.aliyun.com/articles/711191
https://github.com/StabilityMan/StabilityGuide/blob/master/docs/diagnosis/jvm/exception

【教你写Bug,常见的 OOM 异常分析】


推荐阅读