swap 内存交换原理

Swap原理

swap就是内存交换的意思,不是所有的机器都有swap分区,一般设置为内存的2倍。
计算机对内存分为物理内存与虚拟内存。物理内存就是计算机的实际内存大小,虚拟内存则是从磁盘空间开辟出一部分内存空间虚拟出来的,所以也叫磁盘缓存。虚拟内存的出现,让机器内存不够的情况得到部分解决。程序运行的时候系统会在虚拟内存与物理内存直接进行替换和加载。这里的虚拟内存就是swap。
进程运行的时候系统会判断当前物理内存是否还有空闲,如果有那么则直接调入内存进行运行;如果没有,那么会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。
swap out(so):进程向系统请求内存发现不足时,系统会把内存中暂时不用的数据交换出去,放在swap分区里;
swap in(si):当进程又需要这些数据且系统发现还有空闲物理内存时,又会把SWAP分区中的数据交换到物理内存中

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CN9jp7s3-1604477366462)(C:\Users\qiujingping\AppData\Roaming\Typora\typora-user-images\1604372452539.png)]

swap使用完,操作系统会触发

OOM-Killer

机制,杀掉占用内存最大的进程。所以大家经常会发现内存飙高之后进程莫名其妙的不见了。。。。