前言

gperf tools有很多功能,其中有一个heap profiler,可按函数级别定位分配内存的累积量

原理

gperf tools需要替换libc的malloc库,替换为tcmalloc:thread cache malloc,通过在tcmalloc加打桩,即可定位函数级别的内存的累积量

使用方法

工具准备

  1. git clone gperftools;切换至最新的稳定tag;
  2. 编译:autogen.sh && ./configure --prefix=/home/xxx/gperf_release/ && make all && make install
  3. 在gperf_release目录可得到libtcmalloc.a, pprof工具

程序准备

  1. 链接libtcmalloc.a;
  2. 假如监控的是整个程序, 可这样打桩:
    • 引用头文件:gperf_release/include/gperftools/heap-profiler.h
    • 在main函数的起始位置加入:HeapProfilerStart("/tmp/heap_prof"); 其中参数是log存放路径;
    • 在main函数的结束位置加入:HeapProfilerStop();
    • 为了确保程序退出时能执行“HeapProfilerStop”,可在这句代码前面增加while循环,当收到SIGINT时,退出循环,调用此函数;

运行测试

假设可执行程序名为run_test

  1. 程序启动: env HEAP_PROFILE_TIME_INTERVAL="5" run_test
  2. 程序运行后,每隔5秒会产生一个heap文件:/tmp/heap_prof.00xx.heap
  3. 查看heap占用信息:/home/xxx/gperf_release/bin/pprof --text run_test /tmp/heap_prof.00xx.heap

最新文章

  1. python 旋转数组
  2. 高效的插入子节点DocumentFragment
  3. mac下搭建lua环境
  4. Java设计模式学习笔记(单例模式)
  5. 嵌入式Linux驱动学习之路(六)u-boot启动内核
  6. JAZZ
  7. 学习di'z地址
  8. tesseract-orc 合并识别结果
  9. jQuery Easyui DataGrid应用
  10. java正则表达式验证标点符号
  11. 使用vue-cli脚手架搭建简单项目框架
  12. jquery ui-----弹出窗口 dialog
  13. window.open 打开子窗口,关闭所有的子窗口
  14. oldboy s21day15模块装饰器及其他应用
  15. 微信小程序用户信息解密失败导致的内存泄漏问题。
  16. linuxmint 搜狗输入法安装
  17. springCloud com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
  18. 牛客网 完数VS盈数
  19. python -- 异步IO 协程
  20. ural1297

热门文章

  1. 15-scrapy-redis两种形式分布式爬虫
  2. 【前端知识体系-NodeJS相关】浅谈NodeJS中间件
  3. C++入门到理解阶段二基础篇(4)——C++运算符
  4. Pull Request找原作者做review
  5. Python爬虫实践~BeautifulSoup+urllib+Flask实现静态网页的爬取
  6. 记一次feign的问题排查(短路、线程池、队列)
  7. Android高可用移动网络连接---(转载自http://wingjay.com/2019/01/16/mobile-network-connection/)
  8. OpenGL入门1.5:矩阵与变换
  9. wpf source path
  10. NET EF 连接Oracle 的配置方法记录