我看到massif可以测量堆的使用情况,也可以使用一些选项来衡量堆栈的使用情况。它是否也报告全局数据消耗(定义为全局变量或静态变量的数据)?
发布于 2017-06-10 00:26:02
是否还报告全局数据消耗(定义为全局变量或静态变量的数据)?
不,Massif是仅限堆的工具,不测量.data和.bss段,以及直接映射的内存(但它可以测量用于存储某些局部变量和alloca的堆栈):
http://valgrind.org/docs/manual/ms-manual.html
Massif是一个堆分析器。它测量你的程序使用了多少堆内存。这包括有用的空间,以及为记账和对齐目的而分配的额外字节。它还可以测量程序堆栈的大小,尽管它在默认情况下不会这样做。..。
9.2.8。测量进程中的所有内存
值得一提的是,默认情况下,Massif仅测量堆内存,即使用malloc、calloc、realloc、memalign、new、new[]和其他一些类似函数分配的内存。(当然,它还可以选择测量堆栈内存。)这意味着它不会直接测量使用低级系统调用(如mmap、mremap和brk )分配的内存。..。
--stacks=<yes|no> [default: no]
指定是否应执行堆栈分析。此选项会大大降低体量的速度,因此默认情况下处于禁用状态。请注意,Massif假设主堆栈在启动时大小为零。这不是真的,但准确地做其他事情是困难的。此外,从零开始更好地指示用户程序实际控制的主堆栈部分的大小。
https://stackoverflow.com/questions/44462336
复制相似问题