6 データ型

PersistFieldTypesSample.javaの例では、イベントを永続化できるフィールド・タイプを示しますが、そのフィールド・タイプは次のとおりです:

  • java.lang.String (nullの場合もあります)
  • java.lang.Thread (nullの場合もあります)
  • java.lang.Class (nullの場合もあります)
  • byte
  • short
  • int
  • long
  • float
  • double
  • char
  • boolean

ノート:

イベントでは配列はサポートされません。

PersistFieldTypesSample.javaの例を次に示します:

import jdk.jfr.Event;
import jdk.jfr.Label;
import jdk.jfr.Name;

public class PersistFieldTypesSample {

    @Name("com.oracle.FieldTypes")
    @Label("Allowed Field Types")
    static class FieldTypes extends Event {
        @Label("Class Value")
        Class<?> classValue;

        @Label("Thread Value")
        Thread threadValue; // thread must be started

        @Label("String Value")
        String stringValue;

        @Label("Byte Value")
        byte byteValue;

        @Label("Short Value")
        short shortValue;

        @Label("Int Value")
        int intValue;

        @Label("Long Value")
        long longValue;

        @Label("Float Value")
        float floatValue;

        @Label("Double Value")
        double doubleValue;

        @Label("Character Value")
        char characterValue;

        @Label("Boolean Value")
        boolean booleanValue;
    }

    public static void main(String... args) {
        FieldTypes event = new FieldTypes();
        event.classValue = Math.class;
        event.threadValue = Thread.currentThread();
        event.stringValue = "Hello";
        event.byteValue = 42;
        event.shortValue = 4711;
        event.intValue = Integer.MAX_VALUE;
        event.longValue = Long.MAX_VALUE;
        event.doubleValue = Math.PI;
        event.floatValue = Float.NaN;
        event.characterValue = '!';
        event.booleanValue = true;
        event.commit();
    }
}

次のコマンドを使用して、PersistFieldTypesSampleを実行します:

java -XX:StartFlightRecording:filename=pft.jfr PersistFieldTypesSample.java
jfr print --events FieldTypes pft.jfr

最後のコマンドでは、次のような出力が表示されます:

com.oracle.FieldTypes {
  startTime = 12:33:12.434
  classValue = java.lang.Math (classLoader = bootstrap)
  threadValue = "main" (javaThreadId = 1)
  stringValue = "Hello"
  byteValue = 42
  shortValue = 4711
  intValue = 2147483647
  longValue = 9223372036854775807
  floatValue = N/A
  doubleValue = 3.141592653589793
  characterValue = !
  booleanValue = true
  ...
}