版权声明:做一个有尊严的生产者 https://blog.csdn.net/qq_36918149/article/details/88385838
一、 dump jvm 内存
1.1 执行jps 找出线程PID
jps
执行结果如下:
1.2 导出jvm线程对应的堆栈信息
jmap -dump:live,format=b,file=file.bin 262
备注:file.bin 表示文件名称,262表示jvm线程PID ,-dump:live 表示堆中存活的对象
二、分析jvm内存对象信息
2.1 、下载分析软件MemoryAnalyzer
官网: http://www.eclipse.org/mat/
2.2 选择刚才导出的jvm内存堆信息
2.3 开始分析
1)点击 Open Dominator Tree for entire heap.
2)得到的结果中,占用内存比例最大的是mybaties的对象
三、导出java进程中个线程的轨迹,以及这些线程锁持有的锁
3.1 执行命令导出
jstack 262 >test.txt
备注:262 表示PID ,test.txt 表示导出文件
3.2 导出结果如图
有情链接:可以用shell脚本自动dump,线程最大,内存占用最大的线程
https://blog.csdn.net/qianghaohao/article/details/80379118