linux、windows生成dump
linux生成dump
1.找到java进程ID
随便选种方式先找到Java进程ID
jps -ml
-nap|grep 8080
lsof -i:8080
ps -ef|grep java
netstat -nap参数描述
-a (all)显示所有选项,netstat默认不显示LISTEN相关
-n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
-p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
2.使用 jmap命令
jmap -heap 8145 #查看概要信息
jmap -histo 8145 #打印每个class的实例数目,内存占用,类全名信息
jmap -histo:live 8145 #只统计活的对象数量
jmap -heap 8145 >1.txt jmap -histo 8145 >2.txt #这是输出到文件
重点:生成dump(format=b,表示以字节的形式)
jmap -dump:format=b,file=/root/heap.hprof 8145
/root目录下就会有heap.hprof文件,这就是dump文件
然后导出分析,到处是直接传输dump比较慢,用命令压缩下更好,虽然传输速度一样,但体积会小很多很多,在root目录下
tar -zcvf dump.tar.gz ./heap.hprof
这样就生成了dump文件,拿到dump后,可以用JProfiler分析,也可以用独立出eclipse的MemoryAnalyzer分析,然后就走向秃头之路了。
如果操作对你有帮助的话,记得帮忙点个赞哦😘
windows生成dump
1.找java进程ID
管理员启动cmd,执行
netstat -ano|findstr "8080"
2.jmap导出dump
jmap -dump:format=b,file=C://heap.hprof 188376
注意:1.jmap是java自带的,所以java环境变量要配好。
2.cmd要以管理员身份启动才能运行jmap。
如果操作对你有帮助的话,记得帮忙点个赞哦😘