关于java:Linux内存管理神器smem工具

54次阅读

共计 1485 个字符,预计需要花费 4 分钟才能阅读完成。

大家好,我是良许。

明天给大家分享一款 Linux 零碎里的内存治理神器:smem

smem 是 Linux 零碎上的一款能够生成多种内存耗用报告的命令行工具。与现有工具不一样的是 smem 能够报告 PSS【Proportional Set Size(按比例占用大小)】,这是一种更有意义的指标。能够掂量虚拟内存零碎的库和应用程序所占用的内存数量。

因为大部分的物理内存通常在多个应用程序之间共享,名为驻留集大小(RSS)的这个规范的内存耗用掂量指标会大大高估内存耗用状况。PSS 这个参数而是掂量了每个应用程序在每个共享内存区中的「偏心调配」,给出了一个切合实际的掂量指标。

1. 装置 smem 工具

如果你应用的是 Fedora 19 以上零碎,smem 默认在存储库中,因而你能够应用 yum 来装置它:

$ sudo yum install smem

对于 Ubuntu 用户,能够应用 apt-get 命令来装置 smem

$ sudo apt-get install smem

如果无奈失常装置的话,能够下载它的源码间接装置,地址为:https://www.selenic.com/smem/…

2. smem 工具常见用法

默认状况下,smem 将显示每个正在运行的过程及所应用的内存。在这里,你能够注意 RSS 绝对于 USS 和 PSS 的大小,能够看到它显著高于另外二者。

$ smem

此外,smem 还可显示每个库所应用的内存。这个后果比拟长,可能须要消耗一些工夫,取决于你的零碎。

$ smem -m

这个命令产生的后果太多了,如果咱们想要查看特定应用程序应用内存状况,例如 Firefox,那么咱们能够配合 grep 命令应用,同时应用 -p 选项以百分比模式查看内存应用状况。

$ smem -m -p | grep firefox

smem 命令还能够显示每个 用户 的内存应用状况,须要应用 -u 选项:

$ smem -u -p

你还能够应用 -w 选项查看零碎内存应用状况:

$ smem -w -p

3. 后果可视化输入

显示数字毕竟不直观,咱们还能够应用 smem 生成图形图表来显示内存应用状况,高深莫测。要达到这个目标,咱们须要应用到除了不能生孩子啥都能够干的 Python。

但光有 Python 还不行,还须要装置用于生成图表的 matplotlib 库。

Fedora 用户能够通过运行以下命令来装置它:

$ sudo yum install python-matplotlib

Ubuntu 用户能够通过运行上面命令取得它:

$ sudo apt-get install python-matplotlib

库装置之后,当初就能够以条形图或饼图的模式将取得的内存应用状况以可视化示意。

3.1 饼形图

应用 smem 以饼图的模式查看内存应用状况,须要加上 --pie 选项,如下所示:

$ smem --pie name -s pss

命令运行之后将生成一个饼图。请留神,这条命令里咱们还加了 -s pss,意思是显示 PSS 的内存应用状况。要获取 USS 和 RSS 的饼图,只需将命令中的 pss 替换为 uss 或 rss 即可。

从两个饼图中,能够看到 RSS 报告还有 41.74% 的未应用内存,而 PSS 报告有 53.02% 的未应用内存。能够看进去,RSS 显示的可用内存偏小,但理论还有很短缺的内存空间。

3.2 柱状图

smem 的另一个很酷的个性是以柱状图的模式生成输入。有了这个性能,你能够一次性查看 USS、PSS 和 RSS 报告的内存应用状况。

要实现这个性能,须要加上 --bar 选项:

$ smem --bar pid -c "pss uss rss"

下面的命令将给出带有过程 ID 号的内存应用状况的输入后果。如果想要查看过程的名称,能够将 pid 替换为 name 即可。

命令运行之后,能够生成如下图所示的条柱状图。

正文完
 0