Linux下如何查內存信息,如內存總量、已使用量、可使用量。
經常使用Windows操作系統的朋友,已經習慣了如果空閑的內存較多,心里比較踏實。
當使用Linux時,可能覺的Linux物理內存很快被用光(如頻繁存取文件后),當程序結束后內存沒有被釋放。空閑內存少的可憐,心里總不踏實。
Linux操作系統的內存管理方式與Windows不同,Linxu會盡量多的利用內存,讓盡可能多的內存參與工作(做cache)以提高性能。
所以你看到的空閑內存總是很小,當你的程序需要更多內存時,Linxu系統會把做cache的內存還給你,讓你來運行你的程序。
圖1
free -m :查看內存情況,單位為MB。
total 內存總數
used 已經使用的內存數(我的程序使用內存數量+系統緩存使用的內數量)
free 空閑的物理內存數(是真正的空閑,未被任何程序占用)
shared 多個進程共享的內存總額
buffers 磁盤緩存(Buffer Cache)的大小(可提高系統I/O調用的性能)
cached 磁盤緩存(Page Cache)的大小(可提高系統I/O調用的性能)
-buffers/cache 表示已被我們的程序使用的內存數,計算方法:used - buffers - cached
+buffers/cache 表示還可已被我使用的內存數,計算方法:free + buffers + cached
操作系統目前可用內存總量=free + buffers + cached,上圖是1155M
buffers是用來給塊設備做的緩沖大小、buffers是用來存儲目錄里面有什么內容,權限等等
cached用來給文件做緩沖,用來記憶我們打開的文件.
即使你的程序運行結束后,Cache Memory也不會自動釋放。
這就會導致你在Linux系統中程序頻繁讀寫文件后,你會發現可用物理內存(free)會很少。
其實這緩存內存(Cache Memory)在你需要使用內存的時候會自動釋放,所以你不必擔心沒有內存可用。
如果你希望手動去釋放Cache Memory也是有辦法的。
手動釋放緩存
---------------------------------------
/proc是一個虛擬文件系統,我們可以通過對它的讀寫操作做為與kernel實體間進行通信的一種手段。也就是說可以通過修改/proc中的文件,來對當前kernel的行為做出調整。那么我們可以通過調整/proc/sys/vm/drop_caches來釋放內存。操作如下:
cat /proc/sys/vm/drop_caches 查看默認值
先手動執行sync命令,sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。
# echo 3 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
3
將/proc/sys/vm/drop_caches值設為3
再來運行free命令。可以看出來有效的釋放了buffer和cache。
有關/proc/sys/vm/drop_caches的用法在下面進行了說明:
/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first
通過Windows任務管理器查看內存--Win2008/Win7
---------------------------------------------------------------------------
通過任務管理器有“性能”選項卡,可查看“物理內存使用率”。
可直接查看物理內存使用率的百分比。
由於物理內存不夠時,會把當前不活動程序擠到“虛擬內存”上,讓出物理內存給當前程序使用,
所以一直都無法看到物理內存使用率達到100%,只會看到“頁面文件(圖中叫‘提交’)”的量在一直增長。
圖2
正方型紅框內:已使用的物理內存(不含虛擬內存)
物理內存--總數:物理內存總量
物理內存--已緩存:操作系統的“磁盤緩存”占用的內存
物理內存--可用:你還可以使用的內存,是(空閑+已緩存),是不是和Linux很像
物理內存--空閑:真正空閑的物理內存
系統--提交:頁面文件使用率,頁面文件(PF)總量=物理內存+虛擬內存
通過Windows任務管理器查看內存--Win2003/Win Xp
---------------------------------------------------------------------------
通過任務管理器有“性能”選項卡,可查看“頁面文件使用率(PF)”。
無法直接查看內存使用量的百分比,查看不如win 7方便。
頁面文件(PF)總量=物理內存+虛擬內存
圖3