最近一段时间很忙,忙到每天10点多11点下班还是感觉有很多事没有做完,不过倒也没有什么太过低落的情绪,有时候只安静的看一个视频,简单看点文字,或者平静的坐着,并没有太多想法。短时间的工作压力是可以接受的,希望自己越来越好。
话不多说,昨天晚上发布到凌晨5点,中间短短续续,又加深了对jvm常用命令,问题排查思路,arthas,mat等工具的使用。
这些东西之前都接触过,但是都是零散的知识点,没有结合在一起,去排查解决工作中的问题。
说先说一下思路,在一般运行了java应用程序的容器,虚拟机,ecs上,都可以借用jdk原生的命令来排查问题。常用的其实记住jmap,jstack就行了,至于说是jstat之类的,也可以用。
排查思路就是先用原生的jvm命令大概判断程序运行情况,做一个初步的判断,然后jstack或jmap进行heapdump,使用mat工具进行heap分析。
jmap -histo可以查看加载的类实例情况
jmap -heap 导出dumpheap,jmap -dump:live,format=b,file=pid.hprof pid
dump出heap之后,使用mat进行分析,mat打开之后,可以进行泄露分析,树状展示,找到相关类
arthas是个很方便的工具,thread -n,thread -b,或者直接heapdump,就可以直接导出这个文件