背景

我有2个定时任务,一个任务A是00:00开跑,另一个B是04:00开跑。正常情况下A会在2点多时候跑完,但是某一天因为某一步骤用的时间过久,导致4点还没跑完,这时候A内存占用大约在12g左右。4点开始了,B开始运行了,逐渐的跑起来了,当内存用到6g左右的时候,系统内存不足,把A杀死了。

疑问:对于这个我有一个疑问,那就是为什么后起来的进程没有被kill,反倒杀死了原来跑的好好的进程。

原因

到当linux发生oom的时候,系统会根据一定策略找出进程杀掉(SIGKILL)来释放内存。

linux选择进程的策略可以参考http://elixir.free-electrons.com/linux/latest/source/mm/oom_kill.c这个

可以从select_bad_process这个函数入手,我也正在学习中。

讲的比较浅,只是说了个大概,详细方案,等我看完代码补充上来。

更多相关文章

  1. Linux内核分析-9/进程的调度时机
  2. mysql使用kill无法杀死进程
  3. Android进程间(IPC机制)通信(Bundler,Messenger,AIDL,ContentProvi
  4. Android中bindService的细节之二:从进程的角度分析绑定Service的
  5. Android之进程间通信(IPC)-Messenger
  6. java线程实现与进程(二)
  7. 使用线程设置后台进程以处理Android中的工作
  8. 理解Android的本地Service和跨进程Service
  9. android init进程分析 ueventd — 设备节点的创建、固件更新过

随机推荐

  1. Android实现随屏幕旋转的TextView
  2. 笔记 RelativeLayout:相对布局管理器:
  3. Android2.2 API 中文文档系列(4) —— Mani
  4. Android单元测试之Local unit tests(下)
  5. Android项目开发一
  6. android 仿QQ手机版
  7. ConstraintLayout (约束布局)属性详情
  8. android 将图片通过base64转换为String
  9. android:visibility属性
  10. Android虚拟机大屏幕设置(开发平板电脑程