一些内存调试命令在windows环境下并不有效
一些开源的调试包可用 如淘宝的Tsar
1.Jmap 与 mat联调
jmap -histo 4812 > heap.tt
start .
jstack 4812 > thread.txt |监听内存线程运行状态
jps -v |列出所有线程
jstat -gcutil 4812 1000 1000 |查看当前线程状况
jmap -dump:live,format=b,file=heap.bin 4812 |dump内存运行情况,用eclipse mat进行分析
注:内存dump太大时,将jdk转换为jrocket,大幅提升效率
2.查看java 进程
jps| window环境 -m参数查看进程详情
ps | linux环境 ps ax |grep java
3.命令行模式:jconsole 选择相应进程
在启动的界面中:
- 概述:有关堆内存使用情况,线程,类加载和CPU使用情况的综述;
- 内存:内存的详细情况,堆和其他内存;
- 线程:峰值/活动线程,另外,各个线程的明细信息,检测死锁;
- 类:监控加载和卸载的类;
- vm摘要:有关vm的明细信息
- MBean:当前Java程序的MBean(如果有的话)的操作。
4.JvisualVm
打开jvisualvm.exe,VisualVM的应用程序窗口的本地节点就会自动显示本地系统上运行的java程序的名称和进程id
右击其中的一个本地应用/enable heap dump on oome/双击该本地应用
5.MAT for linux调试
linux分析
1.上传mat-linux至linux服务器
2.修改ParseHeapDump.sh ,添加sudo 执行
修改ParseHeapDump.sh和MemoryAnalyzer执行权限
3.sudo ./ParseHeapDump.sh dump.bin文件
4.将生成的文件与dump.bin文件统一复制至windows本地
5.用MAT打开bin文件即可
请注意:权限问题,MemoryAnalyzer.ini设置内存大小
本文介绍了在Windows和Linux环境下进行Java内存调试的常用命令,包括jmap、jstack、jps、jstat、jmap-dump等,以及如何结合Eclipse MAT进行分析。此外,还提到了jconsole和JVisualVM的使用,以及在Linux下利用MAT进行内存分析的步骤。注意在处理大型内存dump时,可能需要调整JDK为jrocket以提高效率。

被折叠的 条评论
为什么被折叠?



