在我的编程工作中,我经常需要了解 Web 应用程序使用的内存。在深入细节和浏览器分析工具之前,粗略的估计通常就足够了。
要在 Linux 或 macOS 上查询内存使用情况,人们通常使用 top 或 htop。我希望看到一个单独的数字:一个进程占用了多少 RAM。但是这些实用程序显示的统计数据可能难以理解。对于 Web 浏览器,情况甚至更复杂,因为它们通常运行许多单独的进程。它们都在 top 输出中显示为一个长列表,每个列表都有自己的指标。

(Tomasz Waraksa,CC BY-SA 4.0)
输入 smem 命令
幸运的是,还有 smem,另一个用于查看内存使用统计信息的命令行实用程序。使用您选择的软件包管理器安装它,例如
sudo apt install smem
要获取 Firefox 的总内存使用量,请执行以下操作
smem -c pss -P firefox -k -t | tail -n 1
这里发生了什么?
-c
开关指定要显示的列。我只对 pss 列感兴趣,它显示进程分配的内存。-P
开关过滤进程,仅包含名称中带有 firefox 的进程-k
开关告诉以兆/吉字节而不是纯字节显示内存使用量-t
开关显示总计tail -n 1
过滤器仅输出最后一行,即总计所在的位置
输出非常简单
$ smem -t -k -c pss -P firefox | tail -n 1
4.9G
直奔主题!而且,在又一个忙碌的工作日之后,打开了五十多个标签页,Firefox 仍然只使用了 5 GB。谷歌浏览器,看看这个 ;-)
使用脚本甚至更轻松
为了方便起见,创建一个名为 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
显示类似这样的内容

(Tomasz Waraksa,CC BY-SA 4.0)
有关更多详细信息,我建议查看 smem 手册页。
您可以在 https://linoxide.com/memory-usage-reporting-smem/ 找到另一个很棒的教程。
尽情享用!
本文最初出现在作者的博客上,并经许可重新发布。
1 条评论