3

google-perftools 包中有一个 pprof 实用程序。将配置文件从 google-perftools cpuprofiler 和 heapprofiler 转换为漂亮图像的实用工具:如https://github.com/gperftools/gperftools/tree/master/doc/pprof-test-big.gifhttps://github .com/gperftools/gperftools/tree/master/doc/heap-example1.png

pprof 输入文件的格式在此处针对 cpu 配置文件进行了描述:https ://github.com/gperftools/gperftools/tree/master/doc/cpuprofile-fileformat.html

但是heap profilesvn中没有描述输入文件的格式。

什么是“堆分析”格式以及如何从我的代码生成这样的文件?我已经可以生成 cpuprofiler 格式,所以我感兴趣的是两种格式之间的区别。

4

1 回答 1

3

似乎格式不是 cpu profiler 的二进制格式,而是文本格式:

第一行:

 heap profile:   1:   2 [ 3:  4] @ heapprofile

正则表达式(不完整)

 (\d+): (\d+) \[(\d+): (\d+)\] @ ([^/]*)(/(\d+))?)?

在哪里

  • 1 & 2 是“使用中的统计数据”;第一个数字是分配数,第二个是字节数
  • 3 & 4 是“总分配统计”;第一个和第二个含义相同
  • heapprofile 是类型

然后配置文件本身遵循很多行:

 1: 2 [ 3: 4] @ 0x00001 0x00002 0x00003

其中“1:2”和“3:4”与第一行的含义相同;但仅从给定的调用点分配;0x00001 0x00002 是调用点的调用栈。

然后空行和“MAPPED_LIBRARIES:”。从下一行开始,非常类似于 /proc/pid/maps 的副本。

于 2011-11-10T18:51:02.280 回答