次の例は、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プリミティブです: boolean
、char
、byte
、short
、int
、long
、float
およびdouble
。 サポートされている参照タイプは次のとおりです: String
、Thread
およびClass
。 配列、列挙およびその他の参照型は暗黙的に無視され、含まれません。 サポートされている型のフィールドは、transient修飾子を使用することで除外できます。 静的フィールドは、サポートされている型であっても含まれません。
注釈が(たとえば、Label
、Description
およびTimespan
などです。)を使用すると、ツールによってデータがわかりやすい方法でビジュアル化されます。 Event
クラスまたはそのフィールドに適用される注釈は、(間接的、直接または関連付けられている)が存在し、MetadataDefinition
アノテーションがあり、列挙、配列またはクラスが含まれていない場合に含まれます。
イベントに格納するデータの収集にはコストがかかる場合があります。 shouldCommit()
メソッドを使用すると、commit()
メソッドが呼び出されたときにイベント・インスタンスが実際にシステムに書き込まれるかどうかを検証できます。 shouldCommit()
がfalseを返す場合は、これらの操作を回避できます。
- 導入されたバージョン:
- 9
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明void
begin()
このイベントのタイミングを開始します。void
commit()
フィールド値、タイムスタンプおよびイベント期間をFlight Recorderシステムに書き込みます。void
end()
このイベントのタイミングを終了します。boolean
少なくとも1つのレコーディングが実行されている場合はtrue
を返し、このイベントの有効な設定をtrue
に設定します。そうでない場合はfalse
が返されます。void
フィールド値を設定します。boolean
このイベントに対して有効な設定がtrue
に設定され、イベントのしきい値内に期間がある場合はtrue
を返し、層でない場合は、false
。
-
コンストラクタの詳細
-
Event
protected Event()サブクラス・コンストラクタによる呼出しの場合は、通常は暗黙的コンストラクタです。
-
-
メソッドの詳細
-
begin
public final void begin()このイベントのタイミングを開始します。- オーバーライド:
- クラス
jdk.internal.event.Event
のbegin
-
end
public final void end()このイベントのタイミングを終了します。end
メソッドは、begin
メソッドの後に呼び出す必要があります。- オーバーライド:
- クラス
jdk.internal.event.Event
のend
-
commit
public final void commit()フィールド値、タイムスタンプおよびイベント期間をFlight Recorderシステムに書き込みます。イベントが
begin
メソッドの呼出しで開始されたが、end
メソッドの明示的な呼出しで終わらない場合は、commit
メソッドが呼び出されるとイベントが終了します。- オーバーライド:
- クラス
jdk.internal.event.Event
のcommit
-
isEnabled
public final boolean isEnabled()少なくとも1つのレコーディングが実行されている場合はtrue
を返し、このイベントの有効な設定をtrue
に設定します。そうでない場合はfalse
が返されます。- オーバーライド:
- クラス
jdk.internal.event.Event
のisEnabled
- 戻り値:
- イベントが有効な場合は
true
、それ以外の場合はfalse
-
shouldCommit
public final boolean shouldCommit()このイベントに対して有効な設定がtrue
に設定され、イベントのしきい値内に期間がある場合はtrue
を返し、層でない場合は、false
。 しきい値は、すべての実行レコーディングの最小しきい値です。- オーバーライド:
- クラス
jdk.internal.event.Event
のshouldCommit
- 戻り値:
- イベントをFlight Recorderシステムに書き込める場合は
true
、そうでない場合はfalse
-
set
public final void set(int index, Object value)フィールド値を設定します。イベントが
EventFactory
クラスを使用して動的に定義される場合にのみ適用されます。指定された
index
は、EventFactory
クラスのファクトリ・メソッドに渡されるValueDescriptor
オブジェクトの索引に対応しています。- オーバーライド:
- クラス
jdk.internal.event.Event
のset
- パラメータ:
index
-EventFactory.create(java.util.List, java.util.List)
に渡されるフィールドのインデックスvalue
- 設定する値はnull
です- 例外:
UnsupportedOperationException
- 動的に生成されたイベントでない場合IndexOutOfBoundsException
-index
が0
以下、またはイベントに指定されたフィールド数以上であるかどうか- 関連項目:
EventType.getFields()
,EventFactory
-