關(guān)于內(nèi)存,從軟件的角度去查看,其實(shí)作為一個(gè)軟件程序員,大多數(shù)對(duì)這個(gè)維度的接觸還是蠻多的。linux中有個(gè)free命令,其就是查看系統(tǒng)內(nèi)存的情況。
free命令的選項(xiàng)也比較簡(jiǎn)單,常用的參數(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”,指的是交換磁盤(pán)。
used:指程序使用的內(nèi)存。
free:未被分配的物理內(nèi)存大小。
shared:共享內(nèi)存大小,主要用于進(jìn)程間通信。
buff/cache:buff指的是buffers,用來(lái)給塊設(shè)備做緩存,而cache指的是page cache,用來(lái)給打開(kāi)的文件做緩存,以提高訪問(wèn)文件的速度。
available:這是free命令新加的一個(gè)選項(xiàng)。當(dāng)內(nèi)存短缺時(shí),系統(tǒng)可用回收buffers和page cache。那么availabe = free
- buffers + page cache對(duì)不對(duì)呢?
其實(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 –不可回收部分。
在我們寫(xiě)代碼的時(shí)候也會(huì)用到malloc()這個(gè)函數(shù),如果你申請(qǐng)內(nèi)存沒(méi)有用到,那可能是你使用的高級(jí)語(yǔ)言,申請(qǐng)內(nèi)存的函數(shù)封裝了malloc。
對(duì)于這些函數(shù)瞅一眼就行了,需要用的時(shí)候再好好深入學(xué)習(xí)一下這個(gè)里面的東西。了解這個(gè)API背后的實(shí)現(xiàn)。
-
Linux
+關(guān)注
關(guān)注
87文章
11342瀏覽量
210148 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3052瀏覽量
74217 -
軟件
+關(guān)注
關(guān)注
69文章
5007瀏覽量
87945
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論