地块输出:
at_firstname
进程在VmRss中显示1.2GB,所以巨大的差异来自于哪里? (我看到Rss不断成长。)
答案 0 :(得分:0)
Valgrind可以使用大量内存来保存内部。因此,由于流程大小包括“客户端/访客”内存+ valgrind自己的内存,所以将massif报告内存显着小于流程大小是正常的。
您可以使用valgrind选项--stats = yes来获取有关客户端使用的内存与valgrind使用的内存的更多信息。
答案 1 :(得分:0)
堆分配功能(例如malloc)建立在这些系统调用之上。例如,在需要时,分配器通常会调用mmap来分配大量内存,然后响应对malloc等的调用,将该内存块的一部分移交给客户端程序。 Massif仅直接测量这些较高级别的malloc等调用,而不测量较低级别的系统调用。
无法根据massif
输出来保证RSS大小。使用--pages-as-heap=yes
选项,您也许可以估计VIRT
的大小,但这包括映射到内存中的所有内容,而不必驻留在RAM中。
您可能想使用alloc-fn
选项,通过手动指定所有“自定义”内存分配功能,可以使您更接近估计实际内存使用情况。