Linux下有一种OOM KILLER 的机制,它会在系统内存耗尽的情况下,启用自己算法有选择性的kill 掉一些进程。

  1. 为什么会有OOM killer
  当我们使用应用时,需要申请内存,即进行malloc的操作,进行malloc操作如果返回一个非NULL
操作表示申请到了可用的内存。事实上,这个地方是可能存在bug的。Linux有一种内存优化机制,即:允许程序申请比系统可用内存更多的内存,但是
Linux并不保证这些内存马上可用,如果凑巧你申请到的内存中在你需要使用的时候还没有完全释放出来,这个时候就会触发OOM
killer了。内核代码为:mm/oom_kill.c,其调用顺序为:
  malloc -> _alloc_pages -> out_of_memory() -> select_bad_process() -> badness()
  2. 如何选择要kill掉的进程
  分析badness代码,其选择过程如下:
  1)计算该进程以及其子进程所占用的内存;
  2)计算CPU时间和存活时间
  3)做相应的权重调整
  总结起来,就是占用内存越高,得分越高,cpu时间和存活时间越高,得分越低;进程优先级越高,得分越低
  综合上述因素后,会得到一个point的值,得分最高的会被选中,然后被kill掉。

最新文章

  1. 1 background(复合属性)与font(复合属性) 2 行内块的间距问题 3 行内元素的margin 4 清除浮动 5定位的元素的层级 6 Border-radius: 边框半径
  2. 【转】hibernate缓存:一级缓存和二级缓存
  3. Programming Erlang 学习笔记(一)
  4. Web应用安全之文件上传漏洞详解
  5. 网站错误记录:A transport-level error has occurred when sending the request to the server.
  6. zookeeper源码分析(一) 工作原理
  7. Http-Only Cookie
  8. OC 属性
  9. typeof和instanceof简介及用法
  10. jsp页面用el表达式获取枚举的code
  11. java学习之查找
  12. HTML&CSS基础学习笔记1.30-颜色的表达
  13. bundle export fail
  14. 数据库连接之SQL JDBC
  15. emacs 高亮
  16. 专访 | 新浪架构师:0-5年Java工程师的职业规划如何做?
  17. 安装mongodb服务
  18. 微服务配合docker使用
  19. AsyncHttpSupport并发发送请求
  20. 各个版本的 Oracle 11.2.0.4下载地址

热门文章

  1. learn shell
  2. Centos7下修改mysql5.6编码方式 解决网站中文显示问号
  3. jQuery data
  4. 微信扫码支付~官方DEMO的坑~参数不能自定义
  5. linux系统下make & make install
  6. [moka同学笔记]六、Yii2.0课程笔记(魏曦老师教程)[徽章气泡]
  7. PHP中抽象类,接口定义
  8. PHP常量
  9. Lind.DDD.ConfigConstants统一管理系统配置
  10. jquery在线五子棋