A recording file consists of binary chunks of data. Each chunk is self describing and self contained. In other words, the metadata (such as the datatype and the content type of each attribute) needed to make use of the data (not only parse the events, but actually use them) is included in the chunk. Also all the values required to be resolved through e.g. constant pools are also included in the chunk.
There is a wide variety of technologies employed to make the JFR efficient, for example:
If converting a binary recording to JSON, it can easily blow up by two orders of magnitude or more, depending on length and content recorded.
The expected performance overhead of JFR using the default template is less than a percent, and for the profiling template, less than two percent.
JDK Flight Recorder started out as JRockit Flight Recorder, and was originally used as a means to collect data to be used to improve the JVM itself.23 After Oracle acquired Sun Microsystems, JRockit Flight Recorder was rebranded Java Flight Recorder.4 In 2018 Java Flight Recorder was open sourced and released as part of OpenJDK 11.5 When open sourced it was rebranded JDK Flight Recorder, due to Java trademark issues.
These are the versions of JFR file format available. It does not encompass all the versions that have ever existed, but rather versions that exist in JVMs after the migration to HotSpot.
The development of JDK Flight Recorder is taking place as part of the OpenJDK JDK 6 project on GitHub,7 although most of the public discussions are taking place on the OpenJDK hotspot-jfr-dev 8 mailing list.
"OpenJDK". Retrieved 28 June 2023. https://openjdk.org/ ↩
"JRockit Flight Recorder Runtime Guide" (PDF). Retrieved 22 January 2019. https://docs.oracle.com/cd/E15289_01/JRMCF/E15070-10.pdf ↩
Oracle JRockit: the Definitive Guide. Packt Pub. 2010. p. 588. ISBN 978-1847198068. 978-1847198068 ↩
"Java Flight Recorder Runtime Guide". Retrieved 22 January 2019. https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170 ↩
"JEP 328: Flight Recorder". Retrieved 22 January 2019. https://openjdk.java.net/jeps/328 ↩
"OpenJDK JDK Project". Retrieved 28 June 2023. https://openjdk.org/projects/jdk/ ↩
"GitHub OpenJDK JDK". GitHub. Retrieved 28 June 2023. https://github.com/openjdk/jdk ↩
"hotspot-jfr-dev mailing list". Retrieved 28 June 2023. https://mail.openjdk.org/pipermail/hotspot-jfr-dev/ ↩