tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。
开头:
本章所有的命令都非常重要,都是使用率相当高的。
文章目录
- monitor/watch/trace 相关命令使用
- monitor
- stack
- trace
- tt
- watch
monitor/watch/trace 相关命令使用
monitor
方法执行监控,这个主要用来监控的。
命令:
monitor -c 1 -m 1 [类全限定名] [方法名]
-c 后面跟的是时间周期,单位秒,也就是多久打印一次;
-d 后面跟的是限制数量,最大匹配多少个;
下面是监控输出的列头介绍:
stack
输出当前方法被调用的调用路径,这个主要就是让我查看这个方法都被什么调用了。
命令:
stack [类的全限定名] -m 1 -n 1
-m 后面跟的是限制数量,最多返回多少个
-n 后面跟的是限制的执行次数
trace
方法内部调用路径,并输出方法路径上的每个节点上耗时。
命令:
trace [类的全限定名] [方法名] -m 1 -n 1
-m -n 的含义和上面一样。
tt
方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测。
命令:
tt -t -m 1 [类的全限定名] [方法名]
-m -n 的含义和上面一样。
返回的字段解释:
watch
函数执行数据观测,这个是一个常用命令,但是也需要对表达式有一定的了解。主要用来检测方法是否被指定到。
命令:
watch [类的全限定名] [方法名] -m 1 -n 1 -x 1
-m -n 的含义和上面一样, -x 表示遍历的深度,最大值是 4,反正展开太深,内存吃不消。
watch 也支持表达式,具体的可以上官网学习一下 https://arthas.aliyun.com/doc/watch.html#%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E,我一般都是现查现用。