Google Perftools Mac OS 安装与使用

项目用到了tcmalloc,然后发现项目有内存泄露,因此略微玩了一下Google Perftools

1.安装

目前Google Perftools的Repo在https://github.com/gperftools/gperftools/tree/master

我们可以下载8.0的Release版本 https://github.com/gperftools/gperftools/tree/at8_0-release

下载之后进行解压:

> cd google-perftool
> ./autogen.sh
> ./configure --prefix=<build_path>
> make
> make install

安装成功!

2.使用

使用方法很简单,目前我们项目使用方式如下(Linux下):

export LD_PRELOAD=<build_path>/lib/libtcmalloc.so

3.Heap Profile

我们可以将tcmalloc使用Heap的信息dump出来,通过pprof工具进行查看。

env HEAPPROFILE="./perf_log/game.log" HEAP_PROFILE_ALLOCATION_INTERVAL=10000000 <program>

HEAPPROFILE: 用于指明dump出来的log信息的前缀
HEAP_PROFILE_ALLOCATION_INTERVAL: 定义采样频率,默认是1G,当tcmalloc分配内存到达配置值时,将会dump出log

查看信息

比如我们的是python

pporf --text /usr/bin/python game.log.0001.heap

4.Heap Leak Profile

我们可以使用tcmalloc的Heap Checker去检查内存泄露

env HEAPCHECK=normal <program>

Heap Checker会在程序结束的时候打印出leak数据,并会提示使用什么指令进行详细信息的查看。

–text: 文本数据
–pdf: 调用栈的信息

5.References

  1. http://dirtysalt.info/gperftools.html#orgheadline2 – 对log信息的说明