arthas命令

发布时间 2023-07-22 00:12:20作者: x-cuke

stack

查看某个方法的调用栈的路径

/**
*.ArthadDemo是对应的类
show是对应的方法名
*/
[arthas@7248]$ stack *.ArthasDemo show
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 77 ms, listenerId: 2
ts=2023-07-21 22:50:17;thread_name=Thread-0;id=e;is_daemon=false;priority=5;TCCL=jdk.internal.loader.ClassLoaders$AppClassLoader@61064425
    @com.example.demo.ArthasDemo.show()
        at com.example.demo.ArthasDemo$1.run(ArthasDemo.java:14)
        at java.lang.Thread.run(Thread.java:834)

//表示利用arthas捕获对应类的show方法3次,也就是打印对应方法3次栈
 stack *.ArthasDemo show -n 3

我们暂时可以忽略-m这个参数

trace

对整个方法的每一个链路的耗时

[arthas@2312]$ trace *.ArthasDemo show
Press Q or Ctrl+C to abort.
Affect(class count: 1 , method count: 1) cost in 84 ms, listenerId: 1
`---ts=2023-07-21 23:49:52;thread_name=Thread-0;id=e;is_daemon=false;priority=5;TCCL=jdk.internal.loader.ClassLoaders$AppClassLoader@61064425
    `---[8017.2216ms] com.example.demo.ArthasDemo:show() //show方法的耗时是8秒
        `---[62.43% 5005.0764ms ] com.example.demo.ArthasDemo:kk() #41 //kk方法的耗时是5秒