From 604b86de677f4b9c8e37d9e6f6bee5f92c9d0c9b Mon Sep 17 00:00:00 2001 From: erik_gahlin Date: Wed, 20 Aug 2025 22:26:34 +0200 Subject: [PATCH 1/3] Initial --- .../src/classes/build/tools/jfr/GenerateJfrFiles.java | 6 ++++-- src/hotspot/share/jfr/metadata/metadata.xml | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/make/src/classes/build/tools/jfr/GenerateJfrFiles.java b/make/src/classes/build/tools/jfr/GenerateJfrFiles.java index 09f3a9f5e3f1f..939f3193820ab 100644 --- a/make/src/classes/build/tools/jfr/GenerateJfrFiles.java +++ b/make/src/classes/build/tools/jfr/GenerateJfrFiles.java @@ -922,8 +922,10 @@ private static void printEvent(Printer out, TypeElement event, boolean empty) { } out.write(" using JfrEvent::commit; // else commit() is hidden by overloaded versions in this class"); - printConstructor2(out, event, empty); - printCommitMethod(out, event, empty); + if (!event.fields.isEmpty()) { + printConstructor2(out, event, empty); + printCommitMethod(out, event, empty); + } if (!empty) { printVerify(out, event.fields); } diff --git a/src/hotspot/share/jfr/metadata/metadata.xml b/src/hotspot/share/jfr/metadata/metadata.xml index 42d99e2477de2..3d699dce18cc0 100644 --- a/src/hotspot/share/jfr/metadata/metadata.xml +++ b/src/hotspot/share/jfr/metadata/metadata.xml @@ -40,10 +40,21 @@ event.commit(); } + void bar(char* text) { + EventText event; + event.set_text(text); + event.commit(); + } + $ make images $ java -XX:StartFlightRecording:settings=none,filename=dump.jfr ... ... $ jfr print dump.jfr + $ jfr query 'SELECT text, COUNT(text) FROM Text GROUP BY text ORDER BY text ASC' dump.jfr + $ jfr query 'SELECT COUNT(duration), AVG(duration), MEDIAN(duration), P90(duration), + P99(duration), P999(duration) FROM Duration' dump.jfr + + The 'jfr query' command is only available in debug builds. Programmatic access: try (var rf = new RecordingFile(Path.of("dump.jfr"))) { From 9d54c0e584cfc75d99b7a0deb85949da6f36774d Mon Sep 17 00:00:00 2001 From: erik_gahlin Date: Thu, 21 Aug 2025 07:17:34 +0200 Subject: [PATCH 2/3] Add view output --- src/hotspot/share/jfr/metadata/metadata.xml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/hotspot/share/jfr/metadata/metadata.xml b/src/hotspot/share/jfr/metadata/metadata.xml index 3d699dce18cc0..069cc72169a23 100644 --- a/src/hotspot/share/jfr/metadata/metadata.xml +++ b/src/hotspot/share/jfr/metadata/metadata.xml @@ -40,7 +40,7 @@ event.commit(); } - void bar(char* text) { + void baz(char* text) { EventText event; event.set_text(text); event.commit(); @@ -48,19 +48,31 @@ $ make images $ java -XX:StartFlightRecording:settings=none,filename=dump.jfr ... + $ jfr view Text dump.jfr + Time Event Thread Text + ======== ======================================== ========================== + 21:54:29 Attach Listener hello + 21:54:29 Attach Listener world ... - $ jfr print dump.jfr $ jfr query 'SELECT text, COUNT(text) FROM Text GROUP BY text ORDER BY text ASC' dump.jfr + + Text Count + =================== =================== + hello 622 + world 37 + $ jfr query 'SELECT COUNT(duration), AVG(duration), MEDIAN(duration), P90(duration), P99(duration), P999(duration) FROM Duration' dump.jfr - The 'jfr query' command is only available in debug builds. + The 'jfr query' command is only available in debug builds, but recordings with internal + event can be generated by product builds. Programmatic access: try (var rf = new RecordingFile(Path.of("dump.jfr"))) { while (rf.hasMoreEvents()) { RecordedEvent e = rf.readEvent(); - System.out.println(e.getName() + " " + e.getDuration()); + EventType et = e.getEventType(); + System.out.println(et.getName() + " " + e.getDuration() + " " + e.getValue("text")); } }; !--> From d6c88bb0aed5e18fa7ac3bbc94b72ae84d956c1f Mon Sep 17 00:00:00 2001 From: erik_gahlin Date: Fri, 22 Aug 2025 07:12:30 +0200 Subject: [PATCH 3/3] Add s --- src/hotspot/share/jfr/metadata/metadata.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hotspot/share/jfr/metadata/metadata.xml b/src/hotspot/share/jfr/metadata/metadata.xml index 069cc72169a23..060a78f13e78a 100644 --- a/src/hotspot/share/jfr/metadata/metadata.xml +++ b/src/hotspot/share/jfr/metadata/metadata.xml @@ -65,7 +65,7 @@ P99(duration), P999(duration) FROM Duration' dump.jfr The 'jfr query' command is only available in debug builds, but recordings with internal - event can be generated by product builds. + events can be generated by product builds. Programmatic access: try (var rf = new RecordingFile(Path.of("dump.jfr"))) {