关注
74.
7、 Kill process or sacrifice child
有一种内核作业(Kernel Job)名为 Out of Memory Killer,它会在可用内存极低的情况下“杀死”(kill)某些进程。OOM Killer 会对所有进程进行打分,然后将评分较低的进程“杀死”,具体的评分规则可以参考 Surviving the Linux OOM Killer。
不同于其他的 OOM 错误, Killprocessorsacrifice child 错误不是由 JVM 层面触发的,而是由操作系统层面触发的。
原因分析
默认情况下,Linux 内核允许进程申请的内存总量大于系统可用内存,通过这种“错峰复用”的方式可以更有效的利用系统资源。
然而,这种方式也会无可避免地带来一定的“超卖”风险。例如某些进程持续占用系统内存,然后导致其他进程没有可用内存。此时,系统将自动激活 OOM Killer,寻找评分低的进程,并将其“杀死”,释放内存资源。
解决方案
1、升级服务器配置/隔离部署,避免争用。
2、OOM Killer 调优。
8、Requested array size exceeds VM limit
JVM 限制了数组的最大长度,该错误表示程序请求创建的数组超过最大长度限制。
JVM 在为数组分配内存前,会检查要分配的数据结构在系统中是否可寻址,通常为 Integer.MAX_VALUE-2。
此类问题比较罕见,通常需要检查代码,确认业务是否需要创建如此大的数组,是否可以拆分为多个块,分批执行。
9、Direct buffer memory
Java 允许应用程序通过 Direct ByteBuffer 直接访问堆外内存,许多高性能程序通过 Direct ByteBuffer 结合内存映射文件(Memory Mapped File)实现高速 IO。
原因分析
Direct ByteBuffer 的默认大小为 64 MB,一旦使用超出限制,就会抛出 Directbuffer memory 错误。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
11-03 14:26
武汉设计工程学院 运营 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 找工作能把i人逼成什么样 #
14852次浏览 174人参与
# 上班到公司第一件事做什么? #
109477次浏览 740人参与
# 你今年做了几份实习? #
9907次浏览 145人参与
# 工作两年想退休了 #
203558次浏览 1799人参与
# 你开始找寒假实习了吗? #
16047次浏览 211人参与
# 新凯来求职进展汇总 #
64146次浏览 171人参与
# 影石Insta360求职进展汇总 #
166529次浏览 1335人参与
# 大厂面试初体验 #
83679次浏览 385人参与
# 0经验如何找实习? #
27223次浏览 456人参与
# 面试尴尬现场 #
205478次浏览 821人参与
# 大学最后一个寒假,我想…… #
72289次浏览 727人参与
# 25届秋招公司红黑榜 #
306735次浏览 1252人参与
# 什么样的公司千万别去 #
28082次浏览 148人参与
# 大家每天通勤多久? #
64539次浏览 415人参与
# 金融财经春招备战日记 #
43917次浏览 216人参与
# 央国企投递记录 #
166075次浏览 1622人参与
# 你找工作经历过哪些骗局? #
9841次浏览 144人参与
# 机械人值得去的半导体企业 #
32998次浏览 183人参与
# 字节出了豆包coding模型 #
6894次浏览 61人参与
# 一起聊华为 #
168649次浏览 820人参与