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