关注
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 错误。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习进度记录 #
154414次浏览 1719人参与
# 我的求职精神状态 #
2887次浏览 78人参与
# 平安产险科技中心求职汇总 #
244491次浏览 2613人参与
# 京东美团大战,你怎么看? #
21176次浏览 190人参与
# 好未来求职进展汇总 #
6007次浏览 46人参与
# 大家每天通勤多久? #
30944次浏览 229人参与
# Keep实习校招 #
48916次浏览 252人参与
# 大城市找工作会更容易吗 #
16409次浏览 125人参与
# 金山WPS工作体验 #
20772次浏览 133人参与
# 提前批过来人的忠告 #
97675次浏览 1092人参与
# 签约有哪些注意事项 #
27078次浏览 227人参与
# 招银网络科技工作体验 #
18829次浏览 85人参与
# 生化环材还是天坑吗 #
30031次浏览 277人参与
# 4399求职进展汇总 #
17521次浏览 139人参与
# 中兴求职进展汇总 #
579578次浏览 2614人参与
# 华为存储OD事变 #
121676次浏览 681人参与
# 京东工作体验 #
12535次浏览 88人参与
# 生物制药/化工校招攻略 #
39965次浏览 275人参与
# 校招第一份工作你干了多久? #
66753次浏览 334人参与
# 腾讯音乐求职进展汇总 #
82135次浏览 450人参与
# 小红书求职进展汇总 #
49612次浏览 441人参与
# 宁德时代求职进展汇总 #
104937次浏览 622人参与