Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Java 11 Features: Java Flight Recorder

DZone's Guide to

Java 11 Features: Java Flight Recorder

Want to learn more about one of the new features for Java 11? Check out this post on using the Java Flight Recorder to record OS and JVM events.

· Java Zone ·
Free Resource

Get the Edge with a Professional Java IDE. 30-day free trial.

In this article, we take a look at how to leverage the Java Flight Recorder (JFR) feature as part of Java 11. Earlier, it was one of the commercial features. But, with Java 11 and JEP 328, this is open source and the Java Flight Recorder records the OS and JVM events to a file that can be inspected using Java Mission Control (JMC). Enabling JFR puts minimal overhead on the JVM performance. Hence, this can be enabled for production deployments too. Now, we will look at some of the JVM arguments to enable JFR.

Time-Based

java -XX:StartFlightRecording=delay=20s,duration=60s,filename=C:\myRecording.jfr,settings=profile,name=SampleRecording


Continuous With Dump on Demand

java -XX:StartFlightRecording=settings=default


Continuous With Dump on Exit

java -XX:StartFlightRecording=settings=default -XX:FlightRecorderOptions=dumponexit=true,dumponexitpath=C:\tmp


 As the JFR is built and made available with Java 11, this excites the developer community. We can reduce the dependency on 3rd party profilers.

As part of Java 11, we are getting the  jdk.jfr module. This API allows programmers to produce custom JFR events and consume the JFR events stored in a file to troubleshoot the issue.

You can download the Java 11 early access here to explore additional features.

Get the Java IDE that understands code & makes developing enjoyable. Level up your code with IntelliJ IDEA. Download the free trial.

Topics:
java ,java 11 ,jdk 11 ,flight recorder ,jmc ,dump file

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}