如何使用Jemalloc跟踪JVM堆外内存泄漏
编译和安装jemalloc
- git clone https://github.com/jemalloc/jemalloc
- git checkout stable-4
- ./autogen.sh
报错
./autogen.sh: 5: ./autogen.sh: autoreconf: not found
上述报错,主要是因为如下工具没有安装, ubuntu 可以执行如下命令,就可以解决
apt-get install autoconf automake libtool
- ./configure --enable-prof
- make
- sudo make install
cannot stat ‘doc/jemalloc.html’: No such file or directory
make install_bin install_include install_lib
查看so装到哪儿去了
find / -name *jemalloc.so
使用
启动jar之前设置下环境变量:
export LD_PRELOAD=/usr/local/lib/libjemalloc.so
export MALLOC_CONF=prof:true,lg_prof_interval:30,lg_prof_sample:17,prof_final:true,prof_prefix:/usr/dump/jeprof.out
环境变量LD_PRELOAD用来替换原生的glibc malloc。 然后启动jar,运行一段时间,停掉后会生成多个jeprof.{processId}的文件.
- lsof -n |grep 87657|grep jemalloc 这个指令是查看进程是否挂载某个动态库
注意生成pdf时需要下面两个依赖
apt-get install graphviz
apt install ghostscript
jeprof --show_bytes --pdf /usr/local/openjdk-8/jre/bin/java ./jeprof*.heap > ./x.pdf
这个指令一定要带上java这个elf文件才行
最后有将近95%的内存来自于jvm本身,也由于运行时间不是很长,所以可以认为是安全的,如果再持续一段时间这个百分比降低了,说明有内存泄露的可能。
jeprof --show_bytes --pdf /usr/local/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java ./jeprof*.heap > ./x.pdf
export LD_LIBRARY_PATH=/home/zxf/openjdk7/build-debug/hotspot/outputdir/linux_i486_compiler1/jvmg/
export JAVA_HOME=/home/zxf/openjdk7/build-debug/j2sdk-image/
export CLASSPATH=.:/home/zxf/openjdk7/build-debug/j2sdk-image/lib:/home/zxf/openjdk7/build-debug/j2sdk-image/jre/lib
参考
https://www.cnblogs.com/ylz8401/p/15960640.html
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2019-12-12 【嵌入式开发】裸机引导操作系统和ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )