模块  jdk.jfr
软件包  jdk.jfr

Class Event


  • public abstract class Eventextends Object
    事件的基类,要进行子类化以定义事件及其字段。

    以下示例显示如何实现Event类。

       import jdk.jfr.Event; import jdk.jfr.Description; import jdk.jfr.Label; 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()方法将其写入Flight Recorder系统。

    默认情况下,启用事件。 要禁用事件注释Event@Enabled(false)

    支持的字段类型是Java原语: booleancharbyteshortintlongfloatdouble 支持的引用类型是: StringThread 数组,枚举和其他引用类型将被忽略,不包括在内。 可以使用transient修饰符排除支持类型的字段。 不包括静态字段,甚至是支持的类型。

    工具可以使用注释时,以有意义的方式可视化数据(例如, Label描述 ,和Timespan )。 应用于Event类或其字段的注释(如果它们存在(间接,直接或关联))包含MetadataDefinition注释,并且它们不包含枚举,数组或类。

    收集要存储在事件中的数据可能很昂贵。 shouldCommit()方法可用于验证在调用Event#commit()commit方法时是否实际将事件实例写入系统。 如果shouldCommit()返回false,则可以避免这些操作。

    从以下版本开始:
    9
    • 构造方法摘要

      构造方法  
      变量 构造器 描述
      protected Event()
      唯一的构造函数,用于子类构造函数的调用,通常是隐式的。
    • 构造方法详细信息

      • Event

        protected Event()
        唯一的构造函数,用于子类构造函数的调用,通常是隐式的。
    • 方法详细信息

      • begin

        public final void begin()
        开始此活动的时间。
      • end

        public final void end()
        结束此事件的时间安排。 end方法必须在之后调用begin方法。
      • commit

        public final void commit()
        将字段值,时间戳和事件持续时间写入Flight Recorder系统。

        如果事件与的调用开始begin方法,但不与的显式调用结束end方法,然后将在活动结束时commit方法被调用。

      • isEnabled

        public final boolean isEnabled()
        如果至少有一个记录正在运行,则返回 true ,并且此事件的启用设置设置为 true ,否则返回 false
        结果
        true如果启用事件, false否则
      • shouldCommit

        public final boolean shouldCommit()
        返回true如果此事件的启用设置为true ,如果持续时间阈值范围内的事件, false否则。 阈值是所有正在运行的录制的最低阈值。
        结果
        true如果事件可以写入Flight Recorder系统,否则为 false
      • set

        public final void set​(int index,                      Object value)
        设置字段值。

        仅在使用EventFactory类动态定义事件时适用。

        提供的index对应于传递给EventFactory类的工厂方法的ValueDescriptor对象的索引。

        参数
        index - 传递给 EventFactory#create(String, java.util.List, java.util.List)的字段的索引
        value - 要设置的值,可以是 null
        异常
        UnsupportedOperationException - 如果它不是动态生成的事件
        IndexOutOfBoundsException - 如果 index小于 0或大于或等于为事件指定的字段数
        另请参见:
        EventType.getFields()EventFactory