valgrind工具之massif_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > valgrind工具之massif

valgrind工具之massif

 2011/10/28 8:17:14  Goldice  http://jdoc.iteye.com  我要评论(0)
  • 摘要:今天小试了一把valgrind的massif工具。Massif在valgrind中的介绍是这样的:MassifMassifisaheapprofiler.Itperformsdetailedheapprofilingbytakingregularsnapshotsofaprogram'sheap.Itproducesagraphshowingheapusageovertime
  • 标签:工具

今天小试了一把valgrind的massif工具。Massif在valgrind中的介绍是这样的:

Massif

Massif is a heap profiler. It performs detailed heap profiling by taking regular snapshots of a program's heap. It produces a graph showing heap usage over time, including information about which parts of the program are responsible for the most memory allocations. The graph is supplemented by a text or HTML file that includes more information for determining where the most memory is being allocated. Massif runs programs about 20x slower than normal.

?

可以看出Massif是一个内存剖析工具。通过不断的取程序堆的快照来达到监视程序内存分配的目的。


我们来编写一个这样的C++文件:test.cc

?

#include <stdlib.h>
#include <stdio.h>

int *fa()
{
  int *p=(int*)malloc(10000);
  return p;
}

int *fb(int *p) 
{
  delete p;
}

int main(void)
{
  printf("ok\n");

  printf("really ok?\n");

  int *vec[10000];

  for(int i=0;i<10000;i++)
  {
    vec[i]=fa();
  }


  for(int i=0;i<10000;i++)
  {
    fb(vec[i]);
  }

  return 0;
}

使用g++进行编译:

g++ test.cc -o test

然后使用valgrind的massif:

valgrind --tool=massif ./test

最后就得到一个massif文件:massif.out.32682 (32682代码进程pid)

使用ms_print来解析这个输出文件:

ms_print massif.out.32682

?最后得到解析结果:



通过图形可以看出Heap随时间变化的变化,可以通过分析下面的函数信息得到究竟是那些函数占用了大量的内存。

?

?

?

?

?

?

?

?

  • 大小: 98.4 KB
  • 查看图片附件
发表评论
用户名: 匿名