一些内存调试命令在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 选择相应进程
在启动的界面中:
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设置内存大小