为了账号安全,请及时绑定邮箱和手机立即绑定

如何度量应用程序或进程的实际内存使用情况?

如何度量应用程序或进程的实际内存使用情况?

慕桂英4014372 2019-06-20 10:33:56
如何度量应用程序或进程的实际内存使用情况?这个问题包括在内。这里非常详细。如何测量Linux中应用程序或进程的内存使用情况?的博客文章理解Linux上内存的使用, ps并不是用于此目的准确工具。为什么ps“错”取决于你对它的看法,ps不是报告进程的实际内存使用情况。它真正要做的是显示每个进程将占用多少实际内存。如果这是唯一运行的进程..当然,一个典型的linux机器有几十个进程在任何给定的时间运行,这意味着vsz和rss号由ps几乎肯定不对.
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

带着ps或者类似的工具,您将只获得该进程分配的内存页的数量。这个数字是正确的,但:

  • 不反映应用程序实际使用的内存量,只反映为其保留的内存量。

  • 如果页面是共享的,例如由多个线程或使用动态链接库,则可能会产生误导。

如果您真的想知道应用程序实际使用了多少内存,则需要在分析器中运行它。例如,valgrind可以让您深入了解所用内存的数量,更重要的是,了解程序中可能发生的内存泄漏。名为“massif”的堆分析器工具val砂矿:

Massif是一个堆分析器。它通过对程序堆的定期快照来执行详细的堆分析。它生成了一个图表,显示了随时间推移堆的使用情况,包括程序中哪些部分负责分配最多内存的信息。该图表由一个文本或HTML文件补充,该文件包含更多信息,用于确定分配最多内存的位置。Massif运行的程序比正常运行慢20倍。

如在缬草文献,您需要运行该程序通过valeland:

valgrind --tool=massif <executable> <arguments>

Massif编写内存使用快照的转储(例如,massif.out.12345)。这些文件提供了(1)内存使用时间线,(2)对于每个快照,都提供了程序内存分配位置的记录。分析这些文件的一个很好的图形工具是地块可视化器..但我发现ms_print,这是一个简单的基于文本的工具,附带了val砂糖,已经有了很大的帮助。

若要查找内存泄漏,请使用(默认)memcheck英勇的工具。


查看完整回答
反对 回复 2019-06-20
?
四季花海

TA贡献1811条经验 获得超5个赞

试试看PMAP指挥:

sudo pmap -x <process pid>


查看完整回答
反对 回复 2019-06-20
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

很难说,但这里有两个“接近”的东西可以帮助。

$ ps aux

将给您虚拟大小(VSZ)

您还可以从/proc文件系统获得详细的统计信息,方法是/proc/$pid/status

最重要的是VmSize,它应该接近什么ps aux给予。

/proc/19420$ cat status
Name:   firefox
State:  S (sleeping)
Tgid:   19420
Pid:    19420
PPid:   1
TracerPid:  0
Uid:    1000    1000    1000    1000
Gid:    1000    1000    1000    1000
FDSize: 256
Groups: 4 6 20 24 25 29 30 44 46 107 109 115 124 1000 
VmPeak:   222956 kB
VmSize:   212520 kB
VmLck:         0 kB
VmHWM:    127912 kB
VmRSS:    118768 kB
VmData:   170180 kB
VmStk:       228 kB
VmExe:        28 kB
VmLib:     35424 kB
VmPTE:       184 kB
Threads:    8
SigQ:   0/16382
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000020001000
SigCgt: 000000018000442f
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
Cpus_allowed:   03
Mems_allowed:   1
voluntary_ctxt_switches:    63422
nonvoluntary_ctxt_switches: 7171


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 565 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信