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