- 文件頁
內存回收,也就是系統釋放掉可以回收的內存,比如緩存和緩衝區,就屬於可回收內存。它們在內存管理中,通常被叫做文件頁(File-backed Page)。大部分文件頁,都可以直接回收,以後有需要時,再從磁碟重新讀取就可以了。
- 髒頁
那些被應用程式修改過,並且暫時還沒寫入磁碟的數據(也就是髒頁),就得先寫入磁碟,然後才能進行內存釋放。
這些髒頁,一般可以通過兩種方式寫入磁碟。可以在應用程式中,通過系統調用 fsync ,把髒頁同步到磁碟中;也可以交給系統,由內核線程 pdflush 負責這些髒頁的刷新。
- 文件映射頁
除了緩存和緩衝區,通過內存映射獲取的文件映射頁,也是一種常見的文件頁。它也可以被釋放掉,下次再訪問的時候,從文件重新讀取。
- 匿名頁
應用程式動態分配的堆內存,也就是在內存管理中說到的匿名頁(Anonymous Page),它們很可能還要再次被訪問啊,不能直接回收,這些內存自然不能直接釋放。但是,如果這些內存在分配後很少被訪問,似乎也是一種資源浪費。
- Linux Swap
Linux的 Swap 機制把這些不常訪問的內存先寫到磁碟中,然後釋放這些內存,給其他更需要的進程使用。再次訪問這些內存時,重新從磁碟讀入內存就可以了。