面试题答案
一键面试- 启动Arthas:
- 下载Arthas对应版本,可从官方仓库获取。
- 执行
java -jar arthas-boot.jar
,它会自动检测当前运行的Java进程,选择目标应用对应的进程编号来启动Arthas连接到目标Java应用。
- 使用
trace
命令:- 命令格式:
trace <类名> <方法名>
。例如,如果要排查com.example.demo.service.UserService
类中的getUserInfo
方法的调用链性能情况,命令为trace com.example.demo.service.UserService getUserInfo
。 - 参数说明:
--skipJDKMethod false
:默认情况下,trace
会跳过JDK方法,若想追踪JDK方法,设置此参数为false
。-n 10
:表示只追踪10次调用,可根据实际情况调整。
- 命令格式:
- 使用
watch
命令辅助:- 命令格式:
watch <类名> <方法名> "{params,returnObj}" -x 2
。例如watch com.example.demo.service.UserService getUserInfo "{params,returnObj}" -x 2
。 - 参数说明:
"{params,returnObj}"
:表示观察方法的入参params
和返回值returnObj
。-x 2
:表示对观察的对象展开2层属性,可按需调整展开层级。
- 命令格式:
- 使用
stack
命令:- 命令格式:
stack <类名> <方法名>
。比如stack com.example.demo.service.UserService getUserInfo
。 - 作用:当
trace
命令输出结果较多难以分析时,stack
命令可以打印出当前方法被调用的栈信息,方便定位方法调用源头。
- 命令格式:
通过以上trace
、watch
、stack
等Arthas关键命令的使用,可以动态排查出Java应用中导致性能瓶颈的方法调用链。