Always on recording
It's now possible to profile JRockit and any application running on top of the JVM continuously in a production environment by starting up the JVM with the flag -XX:FlightRecorderOptions=defaultrecording=true. The recorded data can be flushed to disk at regular intervals which allows Mission Control to "go back in time" and see what really happened inside the runtime when the application misbehaved. The overhead of using the flight recorder is very low, typically less than 1%, and it's recommended to have it always turned on. By default the flight recorder collects information about CPU-usage, garbage collections, memory usage, latencies, hot methods, memory allocations and other interesting data for troubleshooting a Java application.
JRockit Flight Recorder replaces the JRockit Runtime Analyzer recordings (JRA).
Event based profiling
All profiling data produced by the JRockit JVM now come as self-described events that Mission Control can visualize.
Range selection on all tabs
For all the the tabs in the flight recorder user interface it is possible to select the time range that you wish to see profiling data for. For instance, by selecting a time range, you can easily see which methods were executed the most during that time.
More advanced recording settings
It's now possible to configure settings for each individual event type. You can turn on/off events, set thresholds, enable/disable stack traces and set request periods for sampled events.
Import/Export recording templates
You can create a template with your favorite recording settings and import/export the template so it can be be used on other machines where Mission Control is installed.
Flight Recorder Control View
In the Flight Recorder Control View you can start/stop recordings, dump recording data, change recording settings for an ongoing recording and see how much time remains before the recording is finished.
Exception Profiling Tab
In the Exception Profiling Tab you can see what exceptions that were thrown the most and from where they were thrown.
Allocation Profiling Tab
In the Allocation Profiling Tab you can see the allocation pressure for a certain class or thread. There is also detailed statistics about TLA-allocation for advanced performance tuning.
Contention Tab
The Contention Tab shows you which locks that blocked the application the most, which threads that were being blocked and what threads blocked them.
Hot Threads Tab
In the Hot Threads Tab you can see which threads executed the most.
Daemon thread count
The thread graph now shows both daemon and live thread count.
Java application arguments
You can now see the arguments that were used to start up the application, not just the JVM arguments.
GC configuration
The initial heap size, maximum heap size, pause target and heap address bits can now be viewed on the Memory Overview Tab.
Improved heap fragmentation information
The Java heap fragmentation level can now be tracked over time for advanced tuning of the garbage collector. '
Event Tab Group
The Latency Tab Group, available in JRA, has been replaced with the Events Tab Group that can be used to drill down into any profiling data in the recording, not just latency related information.
Event Type View filtering
The Event Types View can be filtered using wildcard expressions.
Add related events to operative set
It's now possible to select a group of events that share a common property and add them to the operative set, for instance all J2EE events with a certain ECID.
Accessible graphs
All data points in the graphs can be viewed in a tabular form, suitable for screen readers.
Thread allocation profiling
The total amount memory allocated for all live threads can be viewed on the Threads Tab.
Flight Recorder trigger
A new flight recording action has been added to the Triggers Tab so that a recording can be triggered when a user defined MBean attribute value exceeds a threshold. For instance, a recording can be started if the CPU-load exceeds 95%.
Accessible dashboard and graphs
The dashboard on the Overview Tab and all graphs in the Management Console can be shown in a tabular form, suitable for screen readers.
Shortest path to GC root
It's now possible to find all references back to the GC root from a leaking object. This is useful for quickly pinpointing the object that is holding on to the leaking object
SWT based
All tabs in the Memory Leak Detector have been converted from Swing to SWT for a more consistent look and better support for screen readers.
Classloader support
Classes can now be viewed individually or grouped together by their name.
Birds-eye View
There is now a separate, birds-eye view, of what is displayed in the type and instance graph
Inspector View
There is now a separate view for inspecting an object instance. Multiple instances can also viewed at the same for a more convenient workflow.
Instances View
There is now a separate view for listing all instances of a certain type.
Instance Tree Tab
In the Instance Tree Tab the instance graph is displayed as a tree.
Type Tree Tab
The Type Tree Tab shows the type graph as a tree.
Welcome Screen
A welcome screen with a guided tour of the Management Console, Flight Recorder and the Memory Leak Detector is now presented for the first time user.
VPAT compliant
Mission Control is now VPAT compliant.
Filtering using regular expression
Tables and trees can be filtered using a regular expression.