用 smem 命令獲取內(nèi)存使用統(tǒng)計信息
smem 命令允許你快速查看你的網(wǎng)頁應用的內(nèi)存使用情況。
在我的編程工作中,我經(jīng)常需要了解網(wǎng)頁應用的內(nèi)存使用情況。在深入研究細節(jié)和瀏覽器剖析工具之前,一個粗略的估計通常就足夠了。
為了了解 Linux 或 macOS 上的內(nèi)存使用情況,人們通常使用 top 或 htop。我很想看到一個單一的數(shù)字:一個進程占用了多少內(nèi)存。但這些工具所顯示的統(tǒng)計數(shù)據(jù)可能很難理解。對于網(wǎng)頁瀏覽器來說,它甚至更加復雜,因為它們經(jīng)常運行許多獨立的進程。它們在 top
輸出中顯示為一個長長的列表,每一個都有自己的單獨指標。
Memory usage using htop
smem 命令
幸運的是有 smem,另一個用于查看內(nèi)存使用統(tǒng)計的命令行工具。用你選擇的包管理器安裝它,例如:
sudo apt install smem
要獲得 Firefox 的總內(nèi)存使用量,請執(zhí)行:
smem -c pss -P firefox -k -t | tail -n 1
這些開關(guān)做了什么?
-c
開關(guān)指定要顯示的列。我只對pss
列感興趣,它顯示一個進程分配的內(nèi)存。-P
開關(guān)過濾進程,只包括那些名字里有firefox
的進程。-k
開關(guān)顯示以 MB/GB 為單位的內(nèi)存使用情況,而不是單純的字節(jié)數(shù)。-t
開關(guān)顯示總數(shù)。tail -n 1
過濾器只輸出最后一行,也就是總數(shù)的地方。
輸出是非常簡單的:
$ smem -t -k -c pss -P firefox | tail -n 1
4.9G
開門見山!而且,經(jīng)過又一天忙碌的工作,打開了 50 多個選項卡,F(xiàn)irefox 仍然只使用 5 GB。看看吧,Google Chrome。
用一個腳本更容易
為了方便起見,我創(chuàng)建一個名為 memory-use
的小腳本,它將進程名稱作為參數(shù)。我把所有的腳本都放在 ~/bin
里,所以:
echo 'smem -c pss -P "$1" -k -t | tail -n 1' > ~/bin/memory-use && chmod +x ~/bin/memory-use
現(xiàn)在我可以很容易地測量任何應用的內(nèi)存使用:
memory-use firefox
memory-use chrome
memory-use slack
還有更多!
該工具不僅可以顯示總的內(nèi)存使用情況。它甚至可以生成圖形輸出。
比如:
smem --pie name -c pss
顯示類似這樣的內(nèi)容:
Pie chart output from smem
關(guān)于更多的細節(jié),我建議查看 smem 手冊頁。
你可以在 https://linoxide.com/memory-usage-reporting-smem/ 上找到另一個很棒的教程。