如何查看內(nèi)存使用情況

下面是一個(gè) free 的輸出示例:

# 注意不同版本的 free 輸出可能會(huì)有所不同
$ free
              total        used        free      shared  buff/cache   available
Mem:        8169348      263524     6875352         668     1030472     7611064
Swap:             0           0           0

你可以看到,free 輸出的是一個(gè)表格,其中的數(shù)值都默認(rèn)以字節(jié)為單位。表格總共有兩行六列,這兩行分別是物理內(nèi)存 Mem 和交換分區(qū) Swap 的使用情況,而六列中,每列數(shù)據(jù)的含義分別為:

  • 第一列,total 是總內(nèi)存大小;
  • 第二列,used 是已使用內(nèi)存的大小,包含了共享內(nèi)存;
  • 第三列,free 是未使用內(nèi)存的大小;
  • 第四列,shared 是共享內(nèi)存的大??;
  • 第五列,buff/cache 是緩存和緩沖區(qū)的大??;
  • 最后一列,available 是新進(jìn)程可用內(nèi)存的大小。

這里尤其注意一下,最后一列的可用內(nèi)存 available 。available 不僅包含未使用內(nèi)存,還包括了可回收的緩存,所以一般會(huì)比未使用內(nèi)存更大。不過(guò),并不是所有緩存都可以回收,因?yàn)橛行┚彺婵赡苷谑褂弥小?/p>

不過(guò),我們知道,free 顯示的是整個(gè)系統(tǒng)的內(nèi)存使用情況。如果你想查看進(jìn)程的內(nèi)存使用情況,可以用 top 或者 ps 等工具。比如,下面是 top 的輸出示例:

# 按下 M 切換到內(nèi)存排序
$ top
...
KiB Mem :  8169348 total,  6871440 free,   267096 used,  1030812 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  7607492 avail Mem


  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  430 root      19  -1  122360  35588  23748 S   0.0  0.4   0:32.17 systemd-journal
 1075 root      20   0  771860  22744  11368 S   0.0  0.3   0:38.89 snapd
 1048 root      20   0  170904  17292   9488 S   0.0  0.2   0:00.24 networkd-dispat
    1 root      20   0   78020   9156   6644 S   0.0  0.1   0:22.92 systemd
12376 azure     20   0   76632   7456   6420 S   0.0  0.1   0:00.01 systemd
12374 root      20   0  107984   7312   6304 S   0.0  0.1   0:00.00 sshd

top 輸出界面的頂端,也顯示了系統(tǒng)整體的內(nèi)存使用情況,這些數(shù)據(jù)跟 free 類(lèi)似,我就不再重復(fù)解釋。我們接著看下面的內(nèi)容,跟內(nèi)存相關(guān)的幾列數(shù)據(jù),比如 VIRT、RES、SHR 以及 %MEM 等。

這些數(shù)據(jù),包含了進(jìn)程最重要的幾個(gè)內(nèi)存使用情況,我們挨個(gè)來(lái)看。

  • VIRT 是進(jìn)程虛擬內(nèi)存的大小,只要是進(jìn)程申請(qǐng)過(guò)的內(nèi)存,即便還沒(méi)有真正分配物理內(nèi)存,也會(huì)計(jì)算在內(nèi)。
  • RES 是常駐內(nèi)存的大小,也就是進(jìn)程實(shí)際使用的物理內(nèi)存大小,但不包括 Swap 和共享內(nèi)存。
  • SHR 是共享內(nèi)存的大小,比如與其他進(jìn)程共同使用的共享內(nèi)存、加載的動(dòng)態(tài)鏈接庫(kù)以及程序的代碼段等。
  • %MEM 是進(jìn)程使用物理內(nèi)存占系統(tǒng)總內(nèi)存的百分比。

除了要認(rèn)識(shí)這些基本信息,在查看 top 輸出時(shí),你還要注意兩點(diǎn)。

第一,虛擬內(nèi)存通常并不會(huì)全部分配物理內(nèi)存。從上面的輸出,你可以發(fā)現(xiàn)每個(gè)進(jìn)程的虛擬內(nèi)存都比常駐內(nèi)存大得多。

第二,共享內(nèi)存 SHR 并不一定是共享的,比方說(shuō),程序的代碼段、非共享的動(dòng)態(tài)鏈接庫(kù),也都算在 SHR 里。當(dāng)然,SHR 也包括了進(jìn)程間真正共享的內(nèi)存。所以在計(jì)算多個(gè)進(jìn)程的內(nèi)存使用時(shí),不要把所有進(jìn)程的 SHR 直接相加得出結(jié)果。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 參考http://blog.csdn.net/windrui/article/details/40046413
    魚(yú)仔_1625閱讀 279評(píng)論 0 0
  • 在系統(tǒng)維護(hù)的過(guò)程中,隨時(shí)可能有需要查看 CPU 使用率,并根據(jù)相應(yīng)信息分析系統(tǒng)狀況的需要。在 CentOS 中,可...
    yichen_china閱讀 7,202評(píng)論 0 1
  • top命令 top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類(lèi)似于Windo...
    螢火蟲(chóng)de夢(mèng)閱讀 5,842評(píng)論 0 0
  • 內(nèi)存是計(jì)算機(jī)非常關(guān)鍵的部件之一,是暫時(shí)存儲(chǔ)程序以及數(shù)據(jù)的空間,CPU只有有限的寄存器可以用于 存儲(chǔ)計(jì)算數(shù)據(jù),而大部...
    dreamer_lk閱讀 1,633評(píng)論 2 10
  • 裊裊綠波清風(fēng)繞,紅蓮稚心人年少。廣寒宮中仙應(yīng)惱,金風(fēng)玉露勝瓊瑤。 開(kāi)始養(yǎng)多肉以后,發(fā)現(xiàn)廣寒宮再也不是嫦娥的閨房,不...
    Sinead閱讀 582評(píng)論 0 0

友情鏈接更多精彩內(nèi)容