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上执行:

相关推荐
南部余额11 分钟前
RabbitMQ 进阶:延迟队列完全指南
java·分布式·spring·rabbitmq
phltxy13 分钟前
Spring AI Agents 智能体模式实战
java·人工智能·spring
摇滚侠22 分钟前
MyBatis 入门到项目实战 特殊 SQL 的执行 34-37
java·sql·mybatis
phltxy1 小时前
Spring AI 可观测性与 Zipkin 实战
java·人工智能·spring
兰令水1 小时前
leecodecode【面试150】【2026.6.13打卡-java版本】
java·算法·leetcode
.道阻且长.1 小时前
C++ string 操作指南:接口解析
java·c语言·开发语言·c++
蚰蜒螟1 小时前
Java 对象的内存密语:从字段偏移量计算到 Unsafe 访问的完整链路
java·开发语言
IT 行者1 小时前
GitHub Spec Kit 实战(六):/speckit.implement 怎么用、怎么审、怎么发现 spec 阶段的遗漏——五部曲收官
java·驱动开发·github·ai编程·claude
星辰_mya1 小时前
CountDownLatch深度解析
java·开发语言·后端·架构
伊甸31 小时前
从企业级项目学敏感词过滤:DFA算法与双层缓存实战
java·算法·缓存