Java25新特性:JFR CPU时间性能分析

JEP509:该特性是一个实验特性,增强了JFR以便获取更准确的CPU时间信息,目前仅在Linux平台可用。

在这之前,JFR使用的是墙钟时间,无法捕获原生代码如Native 代码的CPU消耗**;**线程阻塞在I/O时,时间仍然在走,并且无法区分线程是真正消耗CPU还是处于等待状态。

JEP 509 引入新的 JFR 事件 jdk.CPUTimeSample,基于线程实际消耗的 CPU 时间。

java 复制代码
public class CPUProfiling {
    void main() {
        IO.println("开始执行计算任务...");
        for (long i = 0; i < 2_000_000_000L; i++) {
            Math.sqrt(Math.log(i + 1));
        }
        IO.println("完成");
    }
}

编译:

java 复制代码
javac --enable-preview --release 25 CPUProfiling.java

运行并记录CPU时间:

java 复制代码
java '-XX:StartFlightRecording=jdk.CPUTimeSample#enabled=true,jdk.CPUTimeSample#throttle=500/s,filename=cpu.jfr' CPUProfiling

执行结果:(非Linux平台,告警CPU time method sampling not supported)

生成jfr文件:

分析结果:

java 复制代码
/jdk/jdk-25.0.2.jdk/Contents/Home/bin/jfr view cpu-time-hot-methods cpu.jfr
java 复制代码
/jdk/jdk-25.0.2.jdk/Contents/Home/bin/jfr summary cpu.jfr

在Linux上执行:

相关推荐
code_std15 分钟前
java WebSocket 使用
java·开发语言·websocket
落叶-IT30 分钟前
Java Scanner 类精讲:控制台交互
java·开发语言
chh56336 分钟前
C++--string
java·开发语言·网络·c++·学习
Listen·Rain36 分钟前
向量化详解
java·人工智能·spring·机器学习·ai
想你依然心痛37 分钟前
AUTOSAR Classic Platform架构解析:BSW、RTE与ASW——分层、配置、代码生成
java·架构·实时互动
梦想的旅途238 分钟前
企业微信外部群智能自动回复:基于RPA接口的关键词匹配方案
java·开发语言·数据库·机器人·自动化·企业微信
娇气的红酒1 小时前
关于.NET VS JavaEE平台争论的沉思录
java·java-ee·.net
折哥的程序人生 · 物流技术专研1 小时前
第3篇:手写一个饮品制作模板(附代码)
java·设计模式·行为型模式·模版方法模式·钩子方法·代码复用·编程实战
SamDeepThinking1 小时前
为什么很多人学了Java,还是没真正理解类和对象?
java·后端·面试
zzh___zzh1 小时前
Spring Boot资源路径与ClassPathResource详解
java