如何查看 Linux 进程的内存使用情况?
答案1
你可能想看看“pmap”,例如
pmap -d [PROCESS ID]
在底部,您将看到共享的内存量以及进程私有的内存量。例如:有些应用程序看起来使用了大量内存,但实际上只是将大量共享库计入了计算。
答案2
在 Linux 上::top
按[i]
启用列排序。 [<]
或[>]
移动排序列。请注意,按[z]
[x]
[y]
[X]
[Y]
更改排序突出显示/颜色样式可更改不那么秘密的颜色模式。
free
,ps auv
也显示交换,sar
(sysstat/psacct)非常适合趋势分析。 slabtop
,vmstat
对于内核来说。一般来说,watch
可以快速轻松地监控任意命令,但会浪费进程watch -n0.3 'ps auv | grep top'
watch -n5 'lsof | grep top | grep -v grep | wc -l'
。快速、可重复使用的脚本通常是更好的选择。
为了在从源代码编译时真正深入研究,请使用 google perftools 中的 tcmalloc。
要了解持续趋势,请查看collectd
和cacti
。
在Mac上:
htop
对阵top
- 驻留集大小:1530 1770(误差<10)
- 打开文件:8 9
一小时后连续采集 10 个样本的平均值。如果我遗漏了某些内容(我可能遗漏了),请告诉我。
答案3
ps -o vsz,rss,%mem -p $PROCESS_ID
这将显示程序已请求的内存量(虚拟集大小)、当前存储在 RAM 中的内存量(驻留集大小)以及占总 RAM 的百分比。
有关前两个数字的解释(包括分析实际程序行为的示例),请阅读此文分析内存泄漏的案例研究如果这还不够,至少读一下“虚拟内存简介”部分。
计算程序的驻留集大小因共享内存而变得复杂。Devin 很好地解释了如何可以使用 pmap 来计算共享内存确定启动另一个过程的边际成本。
答案4
ps aux # look at mem% and rss and vsz