gperf heap profiler
2024-09-01 01:17:49
前言
gperf tools有很多功能,其中有一个heap profiler,可按函数级别定位分配内存的累积量
原理
gperf tools需要替换libc的malloc库,替换为tcmalloc:thread cache malloc,通过在tcmalloc加打桩,即可定位函数级别的内存的累积量
使用方法
工具准备
- git clone gperftools;切换至最新的稳定tag;
- 编译:autogen.sh && ./configure --prefix=/home/xxx/gperf_release/ && make all && make install
- 在gperf_release目录可得到libtcmalloc.a, pprof工具
程序准备
- 链接libtcmalloc.a;
- 假如监控的是整个程序, 可这样打桩:
- 引用头文件:gperf_release/include/gperftools/heap-profiler.h
- 在main函数的起始位置加入:HeapProfilerStart("/tmp/heap_prof"); 其中参数是log存放路径;
- 在main函数的结束位置加入:HeapProfilerStop();
- 为了确保程序退出时能执行“HeapProfilerStop”,可在这句代码前面增加while循环,当收到SIGINT时,退出循环,调用此函数;
运行测试
假设可执行程序名为run_test
- 程序启动: env HEAP_PROFILE_TIME_INTERVAL="5" run_test
- 程序运行后,每隔5秒会产生一个heap文件:/tmp/heap_prof.00xx.heap
- 查看heap占用信息:/home/xxx/gperf_release/bin/pprof --text run_test /tmp/heap_prof.00xx.heap
最新文章
- python 旋转数组
- 高效的插入子节点DocumentFragment
- mac下搭建lua环境
- Java设计模式学习笔记(单例模式)
- 嵌入式Linux驱动学习之路(六)u-boot启动内核
- JAZZ
- 学习di'z地址
- tesseract-orc 合并识别结果
- jQuery Easyui DataGrid应用
- java正则表达式验证标点符号
- 使用vue-cli脚手架搭建简单项目框架
- jquery ui-----弹出窗口 dialog
- window.open 打开子窗口,关闭所有的子窗口
- oldboy s21day15模块装饰器及其他应用
- 微信小程序用户信息解密失败导致的内存泄漏问题。
- linuxmint 搜狗输入法安装
- springCloud com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
- 牛客网 完数VS盈数
- python -- 异步IO 协程
- ural1297
热门文章
- 15-scrapy-redis两种形式分布式爬虫
- 【前端知识体系-NodeJS相关】浅谈NodeJS中间件
- C++入门到理解阶段二基础篇(4)——C++运算符
- Pull Request找原作者做review
- Python爬虫实践~BeautifulSoup+urllib+Flask实现静态网页的爬取
- 记一次feign的问题排查(短路、线程池、队列)
- Android高可用移动网络连接---(转载自http://wingjay.com/2019/01/16/mobile-network-connection/)
- OpenGL入门1.5:矩阵与变换
- wpf source path
- NET EF 连接Oracle 的配置方法记录