有关Arthas基本介绍、安装部署、arthas idea插件在上篇文章已经介绍过,这里就不在重述。
文章地址:Java诊断工具Arthas:开篇之watch实战
上篇重点讲了 watch
命令。这篇把剩余一些重要命令讲解演示下。
一、trace命令
作用
:展示方法内部调用路径,并输出方法路径上的每个节点上耗时
命令示例
trace com.zhuangpo.event.service.impl.ArthasTestServiceImpl getPassCheck -n 5 --skipJDKMethod false
参数解释如下:
trace:命令本身,用于启动追踪。
com.zhuangpo.event.service.impl.ArthasTestServiceImpl:要追踪的类的全限定名
getPassCheck:要追踪的方法名
-n 5:执行追踪的次数,这里设置为 5 次。
--skipJDKMethod false:是否跳过 JDK 自带方法的追踪
执行结果
从执行结果可以看到这个方法的总耗时,还有调用链路各个方法和它们的耗时,最耗时的链路会有红色标注
,看去一目了然。
二、stack命令
作用
: 就是将一个方法的被调用的链路展示出来。调用链路是自下而上
命令示例
stack com.zhuangpo.event.service.impl.ArthasTestServiceImpl getPassCheck -n 5
执行结果
很多时候我们都知道一个方法被执行了,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack
命令。
三、jad命令
作用
: 是反编译指定已加载类的源码
命令示例
jad --source-only com.zhuangpo.event.service.impl.ArthasTestServiceImpl
执行结果
这个还是蛮实用的, 因为有时我们经常会不确定线上的代码包否是最新的,这时候就可以通过jad反编译来看下,是否是最新的代码。
四、dashboard命令
作用
: 当前系统的实时数据面板
以下是 dashboard 命令的一些常见作用:
-
监控应用程序的实时指标: 可以显示应用程序的实时CPU使用率、内存使用情况、线程数等指标,帮助开发人员了解应用程序的运行状态。
-
查看应用程序的线程信息: 可以显示当前应用程序的线程列表,包括线程ID、线程状态、线程堆栈等信息,方便开发人员进行线程分析和问题排查。
-
显示应用程序的GC情况:可以展示应用程序的垃圾回收(GC)情况,包括GC次数、GC时间、GC类型等信息,帮助开发人员进行GC性能优化和内存泄漏排查。
命令示例
dashboard
执行结果
五、heapdump命令
作用
: 可以在应用程序运行时动态生成堆转储文件,而无需停止应用程序。生成的堆转储文件可以使用其他工具(如MAT、VisualVM等)进行进一步分析和诊断。
生成堆转储文件可以帮助开发人员分析应用程序的内存使用情况,包括对象的数量、大小、引用关系等。
通过分析堆转储文件,开发人员可以了解到应用程序中存在的内存泄漏、对象过多或过大等问题,从而进行优化和调试。
命令示例
heapdump /tmp/dump.hprof
相关文件就会生存在/tmp/dump.hprof,可以导入到MAT进行分析
其它的就不一一演示了,具体的可以看官方文档。
相关文档
Arthas官方文档地址:
arthas idea插件GitHub地址