了解 JProfiler CPU 分析

Understanding JProfiler CPU Profiling

我试图了解 CPU 分析在 JProfiler 中是如何工作的,为此我创建了一个非常简单的 Rest 服务,如下所示:

@RestController
public class AlertsService {
private static final Logger log = LoggerFactory.getLogger(AlertsService.class);

@GetMapping("/hello")
public String sayHello() throws InterruptedException {
    log.info("inside hello...");
    Thread.sleep(5000);
    return "hello world";
}
}

我启动了应用程序,然后打开了 JProfiler,然后单击“附加”以附加到该服务并选择了以下设置:

接下来我转到 CPU 视图并点击“记录 CPU 数据”

之后我触发了对端点的请求并得到了以下结果:

正如我们所见,我们显示了 com.ramos.loadtest.service.AlertsService.sayHello 方法,但出于某种原因,它在调用树视图中显示 420 微秒,在热点视图中显示 12 微秒,我不明白为什么如果这是在服务调用中指定的,则不会显示至少 5000 毫秒(尝试模拟一个长 运行 过程)。请帮我理解一下,谢谢。

默认情况下,CPU JProfiler 中的视图显示“可运行”线程状态。这是可以安排线程执行方法调用的时间。它不包括监视器上的等待和阻塞以及网络输入或输出上的等待。

要查看挂钟时间,请将视图左上角的线程状态选择器切换到“所有状态”。