關(guān)于內(nèi)存,從軟件的角度去查看,其實作為一個軟件程序員,大多數(shù)對這個維度的接觸還是蠻多的。linux中有個free命令,其就是查看系統(tǒng)內(nèi)存的情況。
free命令的選項也比較簡單,常用的參數(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:~$
可以看到,這個機(jī)器上一共有7 763MB物理內(nèi)存。
total:指系統(tǒng)中總的內(nèi)存。這里有兩種內(nèi)存,一個是“Mem”,指的是物理內(nèi)存;另一個是“Swap”,指的是交換磁盤。
used:指程序使用的內(nèi)存。
free:未被分配的物理內(nèi)存大小。
shared:共享內(nèi)存大小,主要用于進(jìn)程間通信。
buff/cache:buff指的是buffers,用來給塊設(shè)備做緩存,而cache指的是page cache,用來給打開的文件做緩存,以提高訪問文件的速度。
available:這是free命令新加的一個選項。當(dāng)內(nèi)存短缺時,系統(tǒng)可用回收buffers和page cache。那么availabe = free
- buffers + page cache對不對呢?
其實在現(xiàn)在的Linux內(nèi)核中,這個公式不完全正確,因為buffers和page cache里并不是所有的內(nèi)存都可以回收的,比如共享內(nèi)存段、tmpfs和 ramfs 等屬于不可回收的。所以這個公式應(yīng)該變成:available = free + buffers + page cache –不可回收部分。
在我們寫代碼的時候也會用到malloc()這個函數(shù),如果你申請內(nèi)存沒有用到,那可能是你使用的高級語言,申請內(nèi)存的函數(shù)封裝了malloc。
對于這些函數(shù)瞅一眼就行了,需要用的時候再好好深入學(xué)習(xí)一下這個里面的東西。了解這個API背后的實現(xiàn)。
-
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210395 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3055瀏覽量
74331 -
軟件
+關(guān)注
關(guān)注
69文章
5013瀏覽量
88075
發(fā)布評論請先 登錄
相關(guān)推薦
從硬件引申出內(nèi)存屏障,帶你深入了解Linux內(nèi)核RCU
![<b class='flag-5'>從</b>硬件引申出<b class='flag-5'>內(nèi)存</b>屏障,帶你深入了解Linux內(nèi)核RCU](https://file1.elecfans.com//web2/M00/A6/D0/wKgZomUMQJ6AJQ-IAACfdySeS14882.png)
Linux kernel內(nèi)存管理模塊結(jié)構(gòu)分析
![Linux kernel<b class='flag-5'>內(nèi)存</b>管理模塊結(jié)構(gòu)分析](https://file.elecfans.com/web1/M00/C7/65/pIYBAF9lgGeAUz1cAAAUneLHs0k831.gif)
從外觀上識別內(nèi)存
Elastos內(nèi)存管理對軟件調(diào)試的支持
![Elastos<b class='flag-5'>內(nèi)存</b>管理對<b class='flag-5'>軟件</b>調(diào)試的支持](https://file.elecfans.com/web2/M00/49/37/pYYBAGKhtD-AahH3AAAMhZAeUvg225.jpg)
從應(yīng)用角度詳解什么是AXI
![<b class='flag-5'>從</b>應(yīng)用<b class='flag-5'>角度</b>詳解什么是AXI](https://file1.elecfans.com//web2/M00/A6/A9/wKgZomUMP3eAeFkvAAATDo7FTxk912.jpg)
從純粹軟件技術(shù)的角度看Windows CE
![<b class='flag-5'>從</b>純粹<b class='flag-5'>軟件</b>技術(shù)的<b class='flag-5'>角度</b>看Windows CE](https://file.elecfans.com/web1/M00/A8/DF/o4YBAF2RXhmAPXDyAABpaHBq0QQ994.png)
如何理解現(xiàn)場總線?從工業(yè)通信的角度看看資料下載
![如何理解現(xiàn)場總線?<b class='flag-5'>從</b>工業(yè)通信的<b class='flag-5'>角度</b><b class='flag-5'>看看</b>資料下載](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
從軟件角度分析linux內(nèi)核USB子系統(tǒng)的熱插拔過程
從硬件軟件角度理解Gadget框架
![<b class='flag-5'>從</b>硬件<b class='flag-5'>軟件</b><b class='flag-5'>角度</b>理解Gadget框架](https://file1.elecfans.com/web2/M00/8C/A3/wKgaomSvbR2AEoUiAAWGHZ-svJI275.jpg)
從進(jìn)程的角度看內(nèi)存
![<b class='flag-5'>從</b>進(jìn)程的<b class='flag-5'>角度</b>看<b class='flag-5'>內(nèi)存</b>](https://file1.elecfans.com/web2/M00/AB/5F/wKgaomU_fGeAJcGYAADoZYqvC_o595.jpg)
評論