如何通过编程方式检测Java Flight Recorder(JFR)是否正在录制?
Java Flight Recorder 录制状态检测方法
JFR确实没有提供直接检测“是否正在录制”的单一API。
你提到的FlightRecorder.getFlightRecorder().getRecordings().isEmpty()并不准确——这个方法返回的是所有已创建的录制实例,其中包含已经停止但未销毁的录制,所以列表非空不代表有正在运行的录制。
正确的方式是遍历录制列表,检查是否存在状态为RUNNING的录制:
boolean isRecording = FlightRecorder.getFlightRecorder() .getRecordings() .stream() .anyMatch(recording -> recording.getState() == Recording.State.RUNNING);
只有当存在处于RUNNING状态的录制实例时,才说明当前有正在进行的JFR录制。
内容的提问来源于stack exchange,提问作者stiemannkj1
相关产品推荐
相关产品推荐

