Skip to content

[Linux] 清除記憶體的指令

最近由於心血來潮,開始了測試 Linux 檔案執行速度的實驗。為了避免測量速度時受到記憶體載入的影響,故查詢了一些指令來清除記憶體。

既然都測試過了、也學習了一些關於 Linux 系統中記憶體的知識,故一併紀錄了起來。


free 指令

在 Linux 當中,我們可以使用以下指令查看記憶體:

free -m

Output:

Mem 就是我們的記憶體,可以看到我的筆電大約有 12GB,用了大約 5GB。

而 Swap,是指一個位於『硬碟』上的空間。在我們實體記憶體被佔用、然而系統卻需要更多的記憶體資源時,系統會將一部分靜止的資料移動至 Swap。

只不過,Swap 當然不若真正的記憶體這麼快就是了。


清除記憶體

其實在 Linux 中,我們一般不用親自去清理我們的記憶體 (因為 Linux 管理得很就好了)。真要手動釋放記憶體容量的話,我們可以藉由輸入『控制碼』至 “/proc/sys/vm/drop_caches” 這個檔案,進而讓 Linux 系統開始清理記憶體。

至於控制碼的種類,一共有三種:

  • 1: 清除 Page Cache
  • 2: 清除 Dentries 和 Inodes
  • 3: 清除以上所有的種類

Page Cache 就是一般文件資料的 Cache。而 Dentries 和 Inodes 則是像資料夾、文件的編號一般。

根據我的理解,清理記憶體的時候要小心清除掉 Inodes。畢竟目前看到 Linux 上不小心刪除檔案的『還原工具』都仰賴著透過 Inodes 找回檔案。

話題有點扯遠了。總而言之,要輸入控制碼,我們需要 Root 權限。

sudo -i
sync; echo 3 > /proc/sys/vm/drop_caches

這樣一來我們就一口氣清除掉 Page Cache、Dentries、Inodes 了。


References


Read More

Tags:

Leave a Reply