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

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

这个问题包括在内。这里非常详细。

如何测量Linux中应用程序或进程的内存使用情况?

的博客文章理解Linux上内存的使用ps并不是用于此目的准确工具。

为什么ps“错”

取决于你对它的看法,ps不是报告进程的实际内存使用情况。它真正要做的是显示每个进程将占用多少实际内存。如果这是唯一运行的进程..当然,一个典型的linux机器有几十个进程在任何给定的时间运行,这意味着vsz和rss号由ps几乎肯定不对.


慕桂英4014372
浏览 568回答 3
3回答

蝴蝶不菲

带着ps或者类似的工具,您将只获得该进程分配的内存页的数量。这个数字是正确的,但:不反映应用程序实际使用的内存量,只反映为其保留的内存量。如果页面是共享的,例如由多个线程或使用动态链接库,则可能会产生误导。如果您真的想知道应用程序实际使用了多少内存,则需要在分析器中运行它。例如,valgrind可以让您深入了解所用内存的数量,更重要的是,了解程序中可能发生的内存泄漏。名为“massif”的堆分析器工具val砂矿:Massif是一个堆分析器。它通过对程序堆的定期快照来执行详细的堆分析。它生成了一个图表,显示了随时间推移堆的使用情况,包括程序中哪些部分负责分配最多内存的信息。该图表由一个文本或HTML文件补充,该文件包含更多信息,用于确定分配最多内存的位置。Massif运行的程序比正常运行慢20倍。如在缬草文献,您需要运行该程序通过valeland:valgrind&nbsp;--tool=massif&nbsp;<executable>&nbsp;<arguments>Massif编写内存使用快照的转储(例如,massif.out.12345)。这些文件提供了(1)内存使用时间线,(2)对于每个快照,都提供了程序内存分配位置的记录。分析这些文件的一个很好的图形工具是地块可视化器..但我发现ms_print,这是一个简单的基于文本的工具,附带了val砂糖,已经有了很大的帮助。若要查找内存泄漏,请使用(默认)memcheck英勇的工具。

四季花海

试试看PMAP指挥:sudo&nbsp;pmap&nbsp;-x&nbsp;<process&nbsp;pid>

慕的地6264312

很难说,但这里有两个“接近”的东西可以帮助。$&nbsp;ps&nbsp;aux将给您虚拟大小(VSZ)您还可以从/proc文件系统获得详细的统计信息,方法是/proc/$pid/status最重要的是VmSize,它应该接近什么ps aux给予。/proc/19420$&nbsp;cat&nbsp;status Name:&nbsp;&nbsp;&nbsp;firefox State:&nbsp;&nbsp;S&nbsp;(sleeping) Tgid:&nbsp;&nbsp;&nbsp;19420 Pid:&nbsp;&nbsp;&nbsp;&nbsp;19420 PPid:&nbsp;&nbsp;&nbsp;1 TracerPid:&nbsp;&nbsp;0 Uid:&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;1000 Gid:&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;1000&nbsp;&nbsp;&nbsp;&nbsp;1000 FDSize:&nbsp;256 Groups:&nbsp;4&nbsp;6&nbsp;20&nbsp;24&nbsp;25&nbsp;29&nbsp;30&nbsp;44&nbsp;46&nbsp;107&nbsp;109&nbsp;115&nbsp;124&nbsp;1000&nbsp; VmPeak:&nbsp;&nbsp;&nbsp;222956&nbsp;kB VmSize:&nbsp;&nbsp;&nbsp;212520&nbsp;kB VmLck:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;kB VmHWM:&nbsp;&nbsp;&nbsp;&nbsp;127912&nbsp;kB VmRSS:&nbsp;&nbsp;&nbsp;&nbsp;118768&nbsp;kB VmData:&nbsp;&nbsp;&nbsp;170180&nbsp;kB VmStk:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;228&nbsp;kB VmExe:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;28&nbsp;kB VmLib:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;35424&nbsp;kB VmPTE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;184&nbsp;kB Threads:&nbsp;&nbsp;&nbsp;&nbsp;8 SigQ:&nbsp;&nbsp;&nbsp;0/16382 SigPnd:&nbsp;0000000000000000 ShdPnd:&nbsp;0000000000000000 SigBlk:&nbsp;0000000000000000 SigIgn:&nbsp;0000000020001000 SigCgt:&nbsp;000000018000442f CapInh:&nbsp;0000000000000000 CapPrm:&nbsp;0000000000000000 CapEff:&nbsp;0000000000000000 Cpus_allowed:&nbsp;&nbsp;&nbsp;03 Mems_allowed:&nbsp;&nbsp;&nbsp;1 voluntary_ctxt_switches:&nbsp;&nbsp;&nbsp;&nbsp;63422 nonvoluntary_ctxt_switches:&nbsp;7171
打开App,查看更多内容
随时随地看视频慕课网APP