龙空技术网

JVM调试神器Arthas(实战篇:查看调用链各节点耗时)

小逗IT 416

前言:

当前朋友们对“c调用java耗时操作”可能比较关怀,各位老铁们都需要知道一些“c调用java耗时操作”的相关内容。那么小编也在网摘上收集了一些有关“c调用java耗时操作””的相关内容,希望我们能喜欢,我们一起来学习一下吧!

越来越喜欢Arthas了,Arthas的美在于部署简单容易上手,功能强大,能够很好的应用到生产环境上,今天介绍几个Arthas很常用的命令,对于今后故障排查很有帮助。

jad

jad 命令将 JVM 中实际运行的 class 的 byte code 反编译成 java 代码,便于你理解业务逻辑,以及对比class和源码是否有差异。

jad com.xxl.durid.controller.StudentController
stack

输出当前方法被调用的路径,很多时候我们都知道一个方法被执行了,但这个方法被执行的路径非常多,或者你根本就不知道这个方法是从那里被执行了,此时你需要的是 stack 命令。

stack com.xxl.durid.controller.StudentController findById
trace

方法内部调用路径,并输出方法路径上的每个节点上耗时,trace 命令能主动搜索某个类中对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。

trace com.xxl.durid.controller.StudentController findById

trace命令应该故障排查中用的最多,也是最实用的命令,通过trace能看到某个方法中各个调用方法的耗时时间,从而很容易的找到最耗时的子调用。

watch

watch命令监控方法输入参数、返回值,让你能很方便的观察到指定函数的调用情况,能观察到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看。

watch 参数说明:

watch com.xxl.durid.controller.StudentController findById {params[0],returnObj,target} -x 2

params:表示方法入参,可以通过params[0]获取指定位置的参数,可以用于过滤请求条件使用。

returnObj:表示方法返回参数。

target:表示类对象,可以通过target查看成员变量的值。

throwExp:表示异常。

-x:指定输出结果的属性遍历深度,默认为 1 如果返回是个对象,可以看到某个对象的某个内容。

标签: #c调用java耗时操作