ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

内存回收与OOM

2021-05-20 21:34:05  阅读:137  来源: 互联网

标签:OOM 文件系统 回收 内存 进程 磁盘


 

1\如何理解LRU内存回收

  三种内存回收机制

    1\基于LRU算法,回收缓存

    2\基于swap机制,回收不常访问的匿名页

    3\基于OOM机制,杀掉占用大量内存的进程

    第一和第二中都是使用了LRU算法,回收掉不常访问的内存,LRU算法,实际上维护这两个双向链表(active,和inactive)

    active记录活跃的内存页

    inactive记录不活跃的内存页

    越接近链表尾部,就表示内存页越不常访问,这样在内存回收时,就可以根据活跃进程度,优先回收不常访问的内存

    OOM机制:按照oom_score给进程排序,oom_score越大,进程就越容易被系统杀死,当系统发现内存不足以分配新的内存请求时,就会尝试直接内存回收,在这种情况下,如果回收完,文件页和匿名页,内存还是不足的话,OOM就会直接杀死进程

 

    dmesg | grep -i        查看被OOM杀死的进程

    "Out of memory"Out of memory: Kill process 9329 (java) score 321 or sacrifice child

    如果不希望程序被OOM杀死,可以调整oom_score_adj,减少OOM分值,进而降低进程被杀死的概率,,或者,开启内存的overcommit,允许进程申请超过物理内存的虚拟内存

2\回收后的内存去了那里

  内存回收之后,会被放到未使用的内存中,这样新的进程就可以去使用他们

3\OOM是按照虚拟内存还是实际内存来打分

  OOM触发的时机是基于虚拟内存,进程在申请内存时,如果申请的虚拟内存,加上服务器的已用的内存之和,比总的物理内存还要大,就会触发OOM

4\怎么评估应用程序的最小内存

  在程序运行的过程中,通过ps或者是smap,查看他内存的使用情况,

文件系统与磁盘的区别

  磁盘是一个存储设备,可以划分为不同的磁盘分区,而磁盘或者磁盘分区上还可以创建文件系统,并挂载到系统的某个目录中.这样,系统就可以通过这个挂载目录去读写文件了

  简单来说:磁盘是存储数据的块设备.也是文件的载体,.所以文件确实需要磁盘来保证数据的持久化存储

  在读写普通文件的时候,I/O请求会先经过文件系统,然后由文件系统负责,来与磁盘进行交互,而在读写块设备文件的时候,会跳过文件系统,直接与磁盘交互,也就是所谓的裸I/O

  这两种读写文件的缓存自然不同,文件系统管理的缓存,其实就是Cache的一部分,而裸磁盘缓存,用的就是Buffer

 

标签:OOM,文件系统,回收,内存,进程,磁盘
来源: https://www.cnblogs.com/michael0931/p/14791664.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有