找到对应的程序使用
jps //window配置了环境变量时可直接使用, 输出pid:5108 名称:myApp
ps -ef |grep java 查看含有"Java"的活动进程
//linux下可能用到的命令10进制转16进制 printf '%x\n' 13033
情况允许的情况下可以用Java VisualVM工具打开
查看系统配置包括很多东西的路径
jinfo 5108
查看线程状态
jstack 5108 //用于输出当前时刻用户线程的快照,称为threaddump,通常用于监测死锁
死锁这里线程会显示wait to lock <0xaavaads>对象,我们可以看这个对象是什么
查看堆占比命令,gc原因命令,可以使用jhat命令
jhat -class/-gc/-gccause/-gcnew //等命令可以看堆大小,空间占比,上次gc原因
导出内存映像
jmap -dump:format=b,file=myDump.bin 5108 //foramt=b指定文件二进制,file=自定义名称
这里生成的二进制文件不能直接使用,使用jhat打开
jhat myDump.bin //执行完成后会打开一个localhost:7000的端口供你筛选使用
这样我们就能根据地址定位到具体的对象了
线上问题,比如方法耗时可以利用Java VisualVM profile工具
线上问题,给服务器临时加日志排查问题
可以在VisualVM中集成Btrace插件,临时编写线上代码 (具体集成详见网上教程)
也可以集成阿里开源的arthas实现 (具体集成详见网上教程)