public final class jdk.jfr.internal.tool.Main
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: jdk.jfr.internal.tool.Main
super_class: java.lang.Object
{
private static final int EXIT_OK;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 0
private static final int EXIT_FAILED;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int EXIT_WRONG_ARGUMENTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/jfr/internal/tool/Main;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=4, locals=6, args_size=1
start local 0 0: new java.util.LinkedList
dup
aload 0
invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
invokespecial java.util.LinkedList.<init>:(Ljava/util/Collection;)V
astore 1
start local 1 1: aload 1
invokeinterface java.util.Deque.isEmpty:()Z
ifeq 37
2: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Tool for working with Flight Recorder files (.jfr)"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
3: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
4: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Before using this tool, you must have a recording file."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
5: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "A file can be created by starting a recording from command line:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
6: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
7: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " java -XX:StartFlightRecording:filename=recording.jfr,duration=30s ... "
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
8: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
9: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "A recording can also be started on already running Java Virtual Machine:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
10: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
11: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jcmd (to list available pids)"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
12: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jcmd <pid> JFR.start"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
13: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
14: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "Recording data can be dumped to file using the JFR.dump command:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
15: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
16: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jcmd <pid> JFR.dump filename=recording.jfr"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
17: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
18: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "The contents of the recording can then be printed, for example:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
19: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
20: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jfr print recording.jfr"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
22: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jfr print --events CPULoad,GarbageCollection recording.jfr"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
23: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
24: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jfr print --json --events CPULoad recording.jfr"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
25: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
26: invokestatic jdk.jfr.internal.tool.Print.quoteCharacter:()C
istore 2
start local 2 27: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc " jfr print --categories "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
ldc "GC,JVM,Java*"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
ldc " recording.jfr"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
28: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
29: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc " jfr print --events "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
ldc "jdk.*"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
ldc " --stack-depth 64 recording.jfr"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
30: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
31: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jfr summary recording.jfr"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
32: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
33: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc " jfr metadata recording.jfr"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
34: getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
35: getstatic java.lang.System.out:Ljava/io/PrintStream;
ldc "For more information about available commands, use 'jfr help'"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
36: iconst_0
invokestatic java.lang.System.exit:(I)V
end local 2 37: StackMap locals: java.util.Deque
StackMap stack:
aload 1
invokeinterface java.util.Deque.remove:()Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 38: invokestatic jdk.jfr.internal.tool.Command.getCommands:()Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 60
StackMap locals: java.lang.String[] java.util.Deque java.lang.String top java.util.Iterator
StackMap stack:
39: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast jdk.jfr.internal.tool.Command
astore 3
start local 3 40: aload 3
aload 2
invokevirtual jdk.jfr.internal.tool.Command.matches:(Ljava/lang/String;)Z
ifeq 60
41: aload 3
aload 1
invokevirtual jdk.jfr.internal.tool.Command.execute:(Ljava/util/Deque;)V
42: iconst_0
invokestatic java.lang.System.exit:(I)V
43: goto 60
StackMap locals: java.lang.String[] java.util.Deque java.lang.String jdk.jfr.internal.tool.Command java.util.Iterator
StackMap stack: jdk.jfr.internal.tool.UserDataException
44: astore 5
start local 5 45: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "jfr "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual jdk.jfr.internal.tool.Command.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual jdk.jfr.internal.tool.UserDataException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
46: iconst_1
invokestatic java.lang.System.exit:(I)V
end local 5 47: goto 60
48: StackMap locals:
StackMap stack: jdk.jfr.internal.tool.UserSyntaxException
astore 5
start local 5 49: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "jfr "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual jdk.jfr.internal.tool.Command.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ": "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual jdk.jfr.internal.tool.UserSyntaxException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
50: getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
51: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Usage:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
52: getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
53: aload 3
getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual jdk.jfr.internal.tool.Command.displayUsage:(Ljava/io/PrintStream;)V
54: iconst_2
invokestatic java.lang.System.exit:(I)V
end local 5 55: goto 60
56: StackMap locals:
StackMap stack: java.lang.Throwable
astore 5
start local 5 57: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "jfr "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual jdk.jfr.internal.tool.Command.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ": unexpected internal error, "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 5
invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
58: aload 5
invokevirtual java.lang.Throwable.printStackTrace:()V
59: iconst_1
invokestatic java.lang.System.exit:(I)V
end local 5 end local 3 60: StackMap locals: java.lang.String[] java.util.Deque java.lang.String top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 39
61: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "jfr: unknown command '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
62: getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
63: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "List of available commands:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
64: getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.io.PrintStream.println:()V
65: getstatic java.lang.System.err:Ljava/io/PrintStream;
invokestatic jdk.jfr.internal.tool.Command.displayAvailableCommands:(Ljava/io/PrintStream;)V
66: iconst_2
invokestatic java.lang.System.exit:(I)V
67: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 68 0 args [Ljava/lang/String;
1 68 1 argList Ljava/util/Deque<Ljava/lang/String;>;
27 37 2 q C
38 68 2 command Ljava/lang/String;
40 60 3 c Ljdk/jfr/internal/tool/Command;
45 47 5 ude Ljdk/jfr/internal/tool/UserDataException;
49 55 5 use Ljdk/jfr/internal/tool/UserSyntaxException;
57 60 5 e Ljava/lang/Throwable;
Exception table:
from to target type
41 43 44 Class jdk.jfr.internal.tool.UserDataException
41 43 48 Class jdk.jfr.internal.tool.UserSyntaxException
41 43 56 Class java.lang.Throwable
MethodParameters:
Name Flags
args
}
SourceFile: "Main.java"