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
...
}