背景
我们经常遇到这样的场景,某个公共方法被很多上层的调用服务类使用,但是这个公共方法有些调用耗时很长,我们需要找出哪个上层的调用类导致的,这就涉及到查找公共方法的上层调用链
查找方法的上层调用链
使用命令stack class method #cost>10
这个命令可以查找到耗时超时10ms的方法的上层调用链,那如果我们要对jvm系统级别的类进行查找,比如List等方法,我们可以打开选项options unsafe true
,输出结果如下所示:
`ts=2024-04-20 11:31:01;thread_name=Business-Thread-1;id=c2;is_daemon=true;priority=5
@java.util.ArrayList.add()
at test.mytest.CommonService.call(CommonService.java:85)
at test.MyFirstTest.main(MyFirstTest.java:82)