然后再遍历不活跃链表,逐个进行回收释放出32个页,知道 free page 数量达到 pages_high,针对不同的页,回收方式也不一样 。
当然,当内存水平低于某个极限阈值时,会直接发出内存回收,原理和 kswapd 一样,但是这次回收力度更大,需要回收更多的内存 。
文件页:
- 如果是脏页,则直接回写进磁盘,再回收内存 。
- 如果不是脏页,则直接释放回收,因为如果是io读缓存,直接释放掉,下次读时,缺页异常,直接到磁盘读回来即可,如果是文件映射页,直接释放掉,下次访问时,也是产生两个缺页异常,一次将文件内容读取进磁盘,另一次与进程虚拟内存关联 。
swap 换进换出其实是很占用系统IO的,如果系统内存需求突然间迅速增长,那么cpu 将被io占用,系统会卡死,导致不能对外提供服务,因此系统提供一个参数,用于设置当进行内存回收时,执行回收 cache 和 swap 匿名页的,这个参数为:
文章插图
意思就是说这个值越高,越可能使用 swap 的方式回收内存,最大值为100,如果设为0,则尽可能使用回收 cache 的方式释放内存 。
5、总结这篇文章主要是写了 linux 内存管理相关的东西:
首先是回顾了进程地址空间;
其次当进程消耗大量内存而导致内存不足时,我们可以有两种方式:第一是手动回收 cache;另一种是系统后台线程 swapd 执行内存回收工作 。
最后当申请的内存大于系统剩余的内存时,这时就只会产生 OOM,杀死进程,释放内存,从这个过程,可以看出系统为了腾出足够的内存,是多么的努力啊 。
作者:罗道文的私房菜原文链接:http://luodw.cc/2016/08/13/linux-cache/
推荐阅读
- 喝茶的好处多 喝好茶要先学会选
- 买榴莲就要挑“公”的,皮薄肉厚又香甜,学会这4招,一挑一个准
- 买二手房如何节省过户费用?房屋“满两年”很关键
- 油价下跌,再学会这些省油技巧,用车成本降一半
- 新买的美瞳泡了两小时可以戴吗 美瞳用水泡过一晚还可以戴吗
- 黄金茶多少钱斤两黄金两茶
- 野生苦菜茶加工步骤两步
- 两位数除法怎么讲孩子能明白 除数是两位数的除法
- 5分钟让你彻底了解手机各项参数 我不允许有人不会买手机
- 微信悄悄上线了两项新功能,非常实用