Linux - Chrome内存计算

时间:2014-11-19 06:38:42

标签: linux google-chrome memory memory-management valgrind

我在Linux上使用chrome和debug build来进行实验。

我运行带有调试版本的chrome浏览器来运行一些网页,这是一种加载大量图像的方式。

要验证,我使用“cat /proc/render-pid/statm”检查内存。

为了理解分配模式,我运行了“valgrind --tool=massif --vgdb=yes --vgdb-error=0”。

我看到RSS(statm中的第二个值)从最初的133129页(加载图像之前)增加到176562页(加载图像之后)。 valgrind快照显示分配的内存。 (超过140MB)。如果你从statm计算它大约165M(不包括共享内存)

接下来,我释放了每个图像(清除了内部缓存)。 现在,Valgrind快照仅显示4MB内存。 statm RSS值减少到161916页。

(我同意Valgrind可能会记忆。但是如果单独跑步,我会有类似的行为。)

我无法得到的是:

  • statm显示堆中分配的总数约为165M,而valgrind显示为140M
  • 释放后,valgrind显示大约4M,其中statm显示从值开始时内存增加27。

那么如何找到内存的分配位置?

注:

  • valgrind不显示通过MMAP和SBRK分配的内存(使用我传递的参数)。但根据我的理解(使用简单的测试程序),通过MMAP / SBRK的分配将增加“数据”,这是Statm输出中的第6个值。 因此我排除了这种可能性。
  • 我还没有用过“tc-malloc”。
  • 由于我使用valgrind运行chrome,我看到分配了大量的内存。所以一般来说,我只看到差异。
  • 我使用RSS内存计算私有内存 - 共享内存(statm输出中的第2个 - 第3个值)

statm输出的值:

  • 初始值:370434 133129 9450 918 0 289639 0
  • 峰值:412588 175355 10145 918 0 331197 0
  • 结束价值(解冻后):407473 161916 9573 918 0 326678 0

0 个答案:

没有答案