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

機制,殺掉佔用內存最大的進程。所以大家經常會發現內存飆高之後進程莫名其妙的不見了。。。。