關(guān)于內(nèi)存,從軟件的角度去查看,其實(shí)作為一個(gè)軟件程序員,大多數(shù)對這個(gè)維度的接觸還是蠻多的。linux中有個(gè)free命令,其就是查看系統(tǒng)內(nèi)存的情況。
free命令的選項(xiàng)也比較簡單,常用的參數(shù)命令如下。
-b 以Byte為單位顯示內(nèi)存使用情況。
-k 以KB為單位顯示內(nèi)存使用情況。
-m 以MB為單位顯示內(nèi)存使用情況。
-g 以GB為單位顯示內(nèi)存使用情況。
-o 不顯示緩沖區(qū)調(diào)節(jié)列。
-s《間隔秒數(shù)》 持續(xù)觀察內(nèi)存使用狀況。
-t 顯示內(nèi)存總和列。
-V 顯示版本信息。
下面是Linux機(jī)器中使用free -m命令看到的內(nèi)存情況。
$ free -mtotal used free shared buff/cache available
Mem: 7763 5507 907 0 1348 1609
Swap: 16197 2940 13257
figo@figo-OptiPlex-9020:~$
可以看到,這個(gè)機(jī)器上一共有7 763MB物理內(nèi)存。
total:指系統(tǒng)中總的內(nèi)存。這里有兩種內(nèi)存,一個(gè)是“Mem”,指的是物理內(nèi)存;另一個(gè)是“Swap”,指的是交換磁盤。
used:指程序使用的內(nèi)存。
free:未被分配的物理內(nèi)存大小。
shared:共享內(nèi)存大小,主要用于進(jìn)程間通信。
buff/cache:buff指的是buffers,用來給塊設(shè)備做緩存,而cache指的是page cache,用來給打開的文件做緩存,以提高訪問文件的速度。
available:這是free命令新加的一個(gè)選項(xiàng)。當(dāng)內(nèi)存短缺時(shí),系統(tǒng)可用回收buffers和page cache。那么availabe = free
- buffers + page cache對不對呢?
其實(shí)在現(xiàn)在的Linux內(nèi)核中,這個(gè)公式不完全正確,因?yàn)閎uffers和page cache里并不是所有的內(nèi)存都可以回收的,比如共享內(nèi)存段、tmpfs和 ramfs 等屬于不可回收的。所以這個(gè)公式應(yīng)該變成:available = free + buffers + page cache –不可回收部分。
在我們寫代碼的時(shí)候也會(huì)用到malloc()這個(gè)函數(shù),如果你申請內(nèi)存沒有用到,那可能是你使用的高級語言,申請內(nèi)存的函數(shù)封裝了malloc。
對于這些函數(shù)瞅一眼就行了,需要用的時(shí)候再好好深入學(xué)習(xí)一下這個(gè)里面的東西。了解這個(gè)API背后的實(shí)現(xiàn)。
-
Linux
+關(guān)注
關(guān)注
87文章
11232瀏覽量
208961 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3004瀏覽量
73901 -
軟件
+關(guān)注
關(guān)注
69文章
4799瀏覽量
87180
發(fā)布評論請先 登錄
相關(guān)推薦
評論