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

幸运的是,有一个smem,另一个用于查看内存使用统计的命令行工具。例如,在你选择的软件包管理器中安装它。
sudo apt install smem
要获得Firefox的总内存使用量,请执行。
smem -c pss -P firefox -k -t | tail -n 1
这里发生了什么?
-cswitch指定要显示的列。我只对pss列感兴趣,它显示进程分配的内存。-Pswitch 过滤进程,只包括那些名字里有Firefox的进程。-kswitch告诉我们用mega/gigabytes来显示内存的使用,而不是简单的字节数。-tswitch显示总数tail -n 1过滤器只输出最后一行,也就是总数的地方。
该输出是最简单的。
$ smem -t -k -c pss -P firefox | tail -n 1
4.9G
直奔主题!而且,在又一个繁忙的工作日之后,有超过50个打开的标签,Firefox仍然只用了5GB。接招吧,谷歌浏览器;-)
用一个脚本更容易
为了方便起见,创建一个名为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
显示类似这样的东西。

关于更多的细节,我建议你看看smem的手册。