profiler分析c++进程内存占用

  1. 背景
    在比较大的工程中,进程的内存占用分析是很重要的一环,可以分析出各个模块的内存占用,也可以接下来对内存占用大的模块进行优化等等。Google Profiler工具可以简单、快捷的打印出每个函数的内存占比。
  2. 安装
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz
./configure
make -j 32
make install
  1. 使用
    1. 加载执行时替换的soenv LD_PRELOAD="/usr/lib/libtcmalloc.so"
    2. 设置生成prof文件的位置HEAPPROFILE=/tmp/mybin.hprof ./main
    3. 生成报告,两种生成模式1. pdf模式,2. text模式
      1. pdf模式:pprof --pdf main test.prof.0001.heap > test.pdf
      2. text模式:pprof --text main test.prof.0001.heap > test.txt
  2. 分析
    我们生成了一个pdf图如下:
/tmp/workspace/tf_venv/bin/python Total MB: 164608.2
Focusing on: 164608.2
Dropped nodes with <= 823.0 abs(MB) Dropped edges with <= 164.6 MB

上图告诉我们,我们消耗了大致164GB内存,为了图的清晰可见,丢弃了小于823MB的点和小于164MB的内存传递。
图如下:
在这里插入图片描述
因为一些不能机密信息不能查看,我仅截图了少部分内容,这样我们就能知道内存的分配主要是在哪里了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值