圖中的例子不是很典型,典型的情況是:多數的linux系統在free命令後會發現free(剩餘)的記憶體很少,而自己又沒有開過多的程式或服務。
對於上述的情況,正確的解釋是:linux的記憶體管理機制與windows的有所不同。具體的機制我們無需知道,我們需要知道的是,linux的記憶體管理機制的思想包括(不敢說就是)記憶體利用率最大化。核心會把剩餘的記憶體申請為cached,而cached不屬於free範疇。當系統執行時間較久,會發現cached很大,對於有頻繁檔案讀寫操作的系統,這種現象會更加明顯。
直觀的看,此時free的記憶體會非常小,但並不代表可用的記憶體小,當乙個程式需要申請較大的記憶體時,如果free的記憶體不夠,核心會把部分cached的記憶體**,**的記憶體再分配給應用程式。所以對於linux系統,可用於分配的記憶體不只是free的記憶體,還包括cached的記憶體(其實還包括buffers)。即:1
可用記憶體;=free
的記憶體+
cached
的記憶體+
buffers
的記憶體
所以,真正的記憶體利用率 = 可用記憶體 / 總記憶體(注意此處 可用記憶體 由上述公式計算而來,其實這個計算結果在free命令回顯中已有,即回顯結果第三行"-/+ buffers/cached",
此行第二個數值即為加上了buffers和cached之後的記憶體,即為上述公式所算的可用記憶體
)。
如何正確使用記憶體
如何正確使用記憶體 對於初學者來說,記憶體是個神秘的空間。程式的絕大部分錯誤,也是在於記憶體的使用不當造成的,而且這些錯誤有些都是隱藏很深的。所以,如何掌握記憶體的使用,通曉系統對記憶體的管理手段,將是軟體成功的乙個非常關鍵的因素。首先我們要了解記憶體的分配方式。一般來說,記憶體的分配方式有三種 1...
正確計算linux系統記憶體使用率
圖中的例子很典型,就是 多數的linux系統在free命令後會發現free 剩餘 的記憶體很少,而自己又沒有開過多的程式或服務。對於上述的情況,正確的解釋是 linux的記憶體管理機制與windows的有所不同。具體的機制我們無需知道,我們需要知道的是,linux的記憶體管理機制的思想包括 不敢說就...
正確計算linux系統記憶體使用率
ubuntu解決cache逐漸變大導致oom killer將某些程序殺死的情況 linux 記憶體中的 cache 真的能被 麼?正確計算linux系統記憶體使用率 對作業系統來說,buffers和cached是已經被使用的 上圖mem 這一行 memfree total used 314952 2...