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