Answers:
鉴于Google在2016年3月杀死了chrome:// memory,我现在正在使用smem:
# detailed output, in kB apparently
smem -t -P chrom
# just the total PSS, with automatic unit:
smem -t -k -c pss -P chrom | tail -n 1
chrom
为完整路径,例如/opt/google/chrome
或/usr/lib64/chromium-browser
-P firefox
sudo smem
为此使用。338.0M
。这太低了。运行系统监视器时,我看到有11个chrome进程,每个进程占用70MB到400MB的RAM。不确定系统监视器是否报告不正确。
chrome
而不是仅仅chorm
因为如果您同时运行铬和铬,您将看到两者的总数。
smem
使用类似从它自己的输出[c]hrome
,例如smem -tkP '[c]hrome'
。通过匹配c
方括号内的内容而不是括号本身来进行工作。
我确信这不是最好的解决方案,但仍然对我有用:
#!/bin/sh
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $5}' | awk '{sum += $1 } END { print sum }'
ps aux | grep "[/]opt/google/chrome/chrome" | awk '{print $6}' | awk '{sum += $1 } END { print sum }'
注意:将更[/]opt/google/chrome/chrome
改为适合您的系统的名称,例如,如果您使用的是Mac OS X(仅grep "chrome"
可以使用)。
awk
命令?也就是说,为什么不只是... | awk '{sum += $6} END {print sum}'
?
ps aux | grep "/opt/google/chrome/chrome" | awk '{vsz += $5; rss += $6} END { print "vsz="vsz, "rss="rss }'
smem
每个最高答案。尽管是FWIW,但我将其实现为脚本或函数,因为它对于别名来说太复杂了。
运行此:
perl -e '$a="x"x1000000000;sleep(10);print"done\n"'
占用1.8GB RAM。因此,您可以运行以下命令:
perl -e '$a="x"x1000000000;fork;fork;fork;fork;sleep(10);print"done\n"'
将占用16倍。但事实并非如此。
这是由于Linux内核的智能写时复制功能:由于'$ a'的内容不变,因此可以共享'$ a'的内存。但是它只会保持共享,直到'$ a'被更改。发生这种情况时,更改后的部分将被复制并开始占用RAM。
我不知道是否可以测量多少内存是写时复制过量使用的。但这至少可以解释您的超支。
只需快速计算出这些过程的总和即可。
在Mac上:
chrome://system/
并选择所有在mem_usage中报告的python
,CMD + V,输入瞧!“容易” ...🤓😅
PS-忍者和80年代/ 90年代的捷径格斗游戏玩家对此解决方案应该没有问题🤖🕹💾
有USS可用于跨平台
USS(唯一集大小)是进程唯一的内存,如果当前终止该进程,则将释放该内存。
这是我会用它
sudo python3 -c "import psutil;print(sum(p.memory_full_info().uss for p in psutil.Process(pid=292).children())/1024/1024);"
其中pid = 292是活动监视器中最外部进程的PID
我知道chrome / chromium有一个任务管理器,但是它没有给出所使用的总内存。事实证明,任务管理器中的“书呆子状态”链接指向chrome:// memory-redirect /,它确实列出了所使用的总内存。最好是对这些数字进行外部验证,以及在命令行上获取信息的方法,以便可以做更多的事情,但这似乎是最好的方法。