0

我看到地块可以测量堆使用,也可以使用一些选项来测量堆栈使用。它是否还报告全局数据消耗(定义为全局或静态变量的数据)?

4

1 回答 1

1

它是否还报告全局数据消耗(定义为全局或静态变量的数据)?

不,Massif 是仅堆工具,不测量 .data 和 .bss 部分,并且直接 mmap-ed 内存(但它可以测量用于存储一些局部变量和 by 的堆栈alloca):

http://valgrind.org/docs/manual/ms-manual.html

Massif 是一个堆分析器。它测量您的程序使用了多少堆内存。这包括有用空间,以及为簿记和对齐目的而分配的额外字节。它还可以测量程序堆栈的大小,尽管默认情况下它不这样做。...

9.2.8。测量进程中的所有内存

值得强调的是,默认情况下,Massif 仅测量堆内存,即分配有malloccallocreallocmemalignnewnew[]和其他一些类似函数的内存。(当然,它可以选择测量堆栈内存。)这意味着它不会直接测量分配给较低级别​​系统调用的内存,例如mmapmremapbrk。...

--stacks=<yes|no> [default: no]

指定是否应进行堆栈分析。此选项会大大降低 Massif 的速度,因此默认情况下处于关闭状态。请注意,Massif 假定主堆栈在启动时的大小为零。这不是真的,但准确地做其他事情是困难的。此外,从零开始更好地指示用户程序实际控制的主堆栈部分的大小。

于 2017-06-09T16:26:01.730 回答