java.lang.Object
jdk.jfr.Event
事件的基类,用于派生子类以定义事件及其字段。
以下示例展示了如何实现一个Event类。
public class Example {
@Label("Hello World")
@Description("Helps programmer getting started")
static class HelloWorld extends Event {
@Label("Message")
String message;
}
public static void main(String... args) {
HelloWorld event = new HelloWorld();
event.message = "hello, world!";
event.commit();
}
}
在分配事件并填充其字段成员后,可以使用commit()方法将其写入飞行记录器系统。
默认情况下,事件是启用的。要禁用事件,请使用@Enabled(false)注解Event类。
支持的字段类型是Java原始类型:boolean、char、byte、short、int、long、float和double。支持的引用类型包括:String、Thread和Class。数组、枚举和其他引用类型会被静默忽略并不包括在内。可以使用transient修饰符来排除支持的类型的字段。即使是支持的类型,静态字段也不会被包括。
当使用注解时,工具可以以有意义的方式可视化数据(例如Label、Description和Timespan)。如果应用于Event类或其字段的注解存在(间接地、直接地或关联地),具有MetadataDefinition注解,并且不包含枚举、数组或类,则它们会被包括。
收集要存储在事件中的数据可能是昂贵的。可以使用shouldCommit()方法来验证当调用commit()方法时实际上是否会将事件实例写入系统。如果shouldCommit()返回false,则可以避免这些操作。
- 自 JDK 版本:
- 9
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
Event
protected Event()唯一的构造函数,供子类构造函数调用,通常是隐式的。
-
-
Method Details
-
begin
public final void begin()开始计时此事件。 -
end
public final void end()结束此事件的计时。必须在调用begin方法后调用end方法。 -
commit
public final void commit()将字段值、时间戳和事件持续时间写入飞行记录器系统。如果事件以调用
begin方法开始,但没有以显式调用end方法结束,则当调用commit方法时事件结束。 -
isEnabled
public final boolean isEnabled()如果至少有一个记录正在运行,并且此事件的启用设置为true,则返回true,否则返回false。- 返回:
- 如果事件已启用,则返回true,否则返回false
-
shouldCommit
public final boolean shouldCommit()如果此事件的启用设置为true,并且持续时间在事件的阈值内,则返回true,否则返回false。阈值是所有运行记录的最小阈值。- 返回:
- 如果事件可以写入飞行记录器系统,则返回true,否则返回false
-
set
设置字段值。仅当使用
EventFactory类动态定义事件时适用。提供的
index对应于传递给EventFactory类的工厂方法的ValueDescriptor对象的索引。- 参数:
-
index- 传递给EventFactory.create(java.util.List, java.util.List)的字段的索引 -
value- 要设置的值,可以为null - 抛出:
-
UnsupportedOperationException- 如果不是动态生成的事件 -
IndexOutOfBoundsException- 如果index小于0或大于等于为事件指定的字段数 - 参见:
-