Oracle JRockit Mission Control 3.0 is a further improvement of the JRockit Mission Control tools platform built on Eclipse Rich Client Platform (RCP) technology. These release notes contain important details about the latest enhancements and capabilities found in JRockit Mission Control 3.0. It contains information on the following subjects:
New Features and Enhancements in JRockit Mission Control 3.0
JRockit Mission Control 3.0 is an entirely new release and it includes several new and cool features. The most noticeable improvements are described in the following topics:
JRockit Mission Control 3.0.3 is a maintenance release and contains no new features. For a description of the changes in this release, please refer to Changes in JRockit Mission Control 3.0.3.
Eclipse Integration of JRockit Mission Control 3.0.2
The JRockit Mission Control Client is now available as an Eclipse plug-in edition. The plug-in version of the JRockit Mission Control Client provides seamless integration of JRockit Mission Control’s application profiling and monitoring toolset with the Eclipse development platform. By integrating JRockit Mission Control with Eclipse, you will have easy access to the powerful toolset that comprises JRockit Mission Control.
When the JRockit Mission Control Client is run within the Eclipse IDE, you have access to IDE features that aren’t otherwise available in the toolset when it is run as a standalone Rich Client Platform (RCP) application. The most significant of these features is the ability to see specific code in the running application by opening it directly from the JRockit Mission Control Client, a function called Jump-to-Source.
The other benefit of integrating the JRockit Mission Control Client with the Eclipse IDE is that it allows you to profile and monitor an application during its development phase just as you would during its production phase. This allows you to spot potential runtime problems before you actually deploy your application to production; for example, you might, while monitoring an application during its development notice a memory leak. By catching the memory leak during development, you can correct it before you migrate your application to a production environment.
For more information, please see Integration with the Eclipse IDEor open the JRockit Mission Control Client and launch the help system.
The JRockit Runtime Analyzer now shows the number of bytes of objects allocated by each Java thread.
Three sample files that demonstrate the features of the Latency Analysis Tool have been added. The files are located at JROCKIT_HOME/missioncontrol/samples/jrarecordings/. The files are:
pricing_server_logging_on.jra
pricing_server_logging_off.jra
java2d_demo.jra
Note:
This file is a recording of the demo located at JROCKIT_HOME/demo/jfc/Java2D. The Java2D demo folder contains the source, allowing this recording to demonstrate Jump-to-Source (Jump-to-Source is only available when you are running JRockit Mission Control within Eclipse, as described in Eclipse Integration of JRockit Mission Control 3.0.2).
Small adjacent Latency Analysis Tool (LAT) events of the same type are now clearly marked to make them easier to distinguish.
Configurable velocimeters (Figure 2-1) have been added to the Console
Figure 2-1 Configurable Velocimeter
You can see the exact numerical value for a point in a graph in a tooltip by hovering your mouse pointer at the point.
Note:
This feature is only available when the graph is frozen.
Figure 2-2 Displaying the Value for a Point on a Graph
The time ranges of graphs shown on the same page can be synchronized.
You can filter attributes by name in the attribute browser when you select attributes to add to a graph or similar.
Thread transitions—a latency event in one thread that is associated with another thread—are now displayed as small black arrows on the Latency Graph, as shown in Figure 2-3. By hovering your pointer over a transition arrow, a tooltip will appear, describing the transition.
A latency analyzer has been added to the JRA. You can create recordings that contain latency information for your application. The JRA Tool now contains three additional tabs that all show latency data from different perspectives. These tabs are prefixed Latency and named: Latency Log, Latency Graph, and Latency Traces (Figure 2-4). Together with these three tabs, there are two auxiliary tabs that allow you to turn on and off event types on the latency tabs and view properties.
All tabs prefixed with Latency share a common Latency Timeline slide bar where you can easily zoom in and out of your JRA recording to find latency events within a specific time frame.
Figure 2-4 New Latency tabs in JRA Tool
The new latency analyzer in the JRA Tool includes the following:
Latency Log tab: the Latency Log tab lists the latency events that took place during the recording. By looking at latency data in the Latency Log tab, you can easily find a specific event type or select an attribute by using the sort and filter functions.
Latency Graph tab: the Latency Graph gives you a graphical overview of how the application executes and it is easy to select events in terms of when they happened and in which thread.
Latency Traces tab: the Latency Traces tab contains a list of all methods that contain latency events. The method traces with the most latencies are listed first. The Latency Traces table can be customized to display specific packages, classes, and methods.
Event Types tab: the Event Types tab lists the events in relation to where they come from. The Event types themselves come from a Level and the Level comes from a Producer.
Properties tab: the Properties tab lists the event properties, the event’s stack trace, or the general event data depending on the view you have chosen.
Note:
For older versions of JRockit Mission Control you will need a license file to use the Latency Analyzer. You can purchase the license from Oracle.
Recording Templates in JRA Recording Wizard
The JRA recording wizard now contains three templates that will make it easier to setup your JRA recording. The templates are the following:
JRA Recording Normal—classic style to create a JRA recording.
Latency Recording Normal—used to create latency data.
Latency Recording Minimal Overhead—used to create latency data. It yields minimal overhead when recording latency data.
Figure 2-5 JRA recording wizard templates
Increased Recording Capabilities in the JRA
In addition to the new Latency Analyzer recording capabilities, other recording capabilities have been added to the JRA: thread dumps and CPU load can be specified under the advanced options when creating a JRA recording. You can also set the interval for each sample type (Figure 2-6).
Figure 2-6 Thread dumps and CPU sampling in JRA recording
The JRA also records lazy unlocking statistics as part of lock profiling. For more information on lazy unlocking, see -XXlazyUnlocking in the Oracle JRockit JDK Command-Line Reference.
Possibility to View Thread Dump Data
In JRockit Mission Control 3.0 it is possible to record thread dump data in the JRA and then view thread dumps in the newly added Threads tab in the JRA Tool (Figure 2-7).
Figure 2-7 Thread dump in the JRA Tool
User Interface is Localized
The JRockit Mission Control 3.0 release is now available in a Japanese version (Figure 2-8) and a simplified Chinese version (Figure 2-9).
Figure 2-8 Japanese JRockit Mission Control
Figure 2-9 Simplified Chinese JRockit Mission Control
Documentation is Localized
The English user documentation for JRockit Mission Control 3.0 will be translated after the general availability release to Japanese and Simplified Chinese. Please refer to the Japanese and Chinese eDocs sites for more information.
Documentation is Available on eDocs as PDFs
For the JRockit Mission Control 3.0 release, the user documentation is available as online help within the tool itself and on eDocs as pdfs, see http://edocs.bea.com/jrockit/tools/index.html.
Most Recent Changes
This section describes the changes and issues resolved in JRockit Mission Control 3.0.
Table 2-1 lists changes in JRockit Mission Control 3.0.3.
Table 2-1 Changes in JRockit Mission Control 3.0.3
Issue ID
Description
CR369269
When viewing the GCs tab of a JRA recording, the legend for the References and finalizers chart has been changed. The label Objects with finalizers (formerly Final references) shows the total number of existing objects having a finalizer. The label Finalization queue length (formerly Objects with finalizers) shows the total number of objects waiting on finalization after a collection.
In the Details - Old Collection section, the three corresponding labels (# Objects with Finalizers, Finalization Queue Length Before, and \Finalization Queue Length After) have also been changed.
The rationale for these changes is to better explain the values and what they represent.
CR367378
When trying to run the Eclipse version of JRockit Mission Control with Sun Hotspot JDK6_5, some users were unable to create a new connection and the connector panel showed only a few, if any, JDP connectors. This has been fixed.
Note:
Part of this fix is that, going forward, if you run JRockit Mission Control on any JVM other than JRockit JVM, a message box will appear, stating that running JRockit Mission Control on a non-JRockit JVM is unsupported.
CR364111
In earlier versions of JRockit Mission Control, the Uptime counter in System Statistics panel of the Management Console’s Runtime tab was not working as designed. This has been fixed.
CR363616
When a trigger rule was active in multiple consoles, the internal state of the trigger in each console could be affected by data from other consoles. This has been fixed.
CR362074
A tooltip has been added to the Latency Time Line (the graph at the top in a LAT recording) that shows activity at a specific point on the timeline (Figure 2-10).
Figure 2-10 Latency Time Line Tooltip
CR358674
The Latency Analysis Tool in JRockit Mission Control will now record threads that wait for object allocations or TLA fetches.
CR355590
When expanding references in the Memory Leak Detector’s instance graph, almost every object node seemed to be referenced by a Global JNI Handle. Also, occasionally, objects would be referenced by the thread root (Memleak Socket Reader). This issue would clutter the graph with false dependencies, making it difficult to follow the actual reference chain and find the leak. This has been fixed.
Changes in JRockit Mission Control 3.0.2
Table 2-2 lists changes in this version of JRockit Mission Control.
Table 2-2 Changes in JRockit Mission Control 3.0.2
Issue ID
Description
CR359828
In the version of JRockit Mission Control that shipped with JRockit JDK R27.4, the value for Heap Usage Before for a garbage collection in a JRA recording was incorrect, as it actually showed the Heap Usage After for the proceeding collection instead. This is now fixed.
CR355927
When using the LAT with a JRA recording, the event start and end times were often incorrect; for example, while the correct time should be between 1min to 1m30s, user might have seen something like 13480days.This has been fixed.
CR355308
Previously, if JRockit Mission Control was run with a Japanese or Traditional Chinese locale on an installation of Windows where the system font did not in itself contain glyphs for that language (such as in English editions of Windows, by default), bold fonts in the Memory Leak Detector would incorrectly be rendered as boxes. This has been fixed in R27.5.0.
CR353505
When you would specify a delay before the recording should start in the JRA recording wizard, the delay was not handled properly; for example:
The progress meter didn't take the delay into account when displaying the remaining time and percentage.
When you’d click the stop button before the recording has started
You got an exception because the JRA editor could not download and save the file locally.
The actual recording in JRockit JVM/JRAMBean was not aborted, so a new JRA recording could not be started.
This has been fixed.
CR352607
When adding the Sum of Pauses from the table on the GCs tab, the total would differ from the total calculated from the same values in Excel. This has been fixed.
CR352424
The JRA now records the nursery size before and after young collections and shows these values in JRockit Mission Control.
CR351976
In releases prior to JRockit Mission Control 3.0.2 the columns Generational, Mark Phase and Sweep Phase in the GC General Tab in the JRA referred to the strategy that was used before the current strategy change. With JRockit Mission Control 3.0.2, these columns now refer to the strategy the garbage collection changed into. If recordings from a JRockit JDK release prior to R27.5 are opened up in JRockit Mission Control 3.0.2, some columns will show N/A. This is because all information about strategy changes were not recorded with these releases.
CR351646
JRA recording files will now always have the .jra file extension, regardless of what filename was used when starting the recording and whether or not compression was used.
CR345579
Previously, in some circumstances, JRockit Mission Control used more memory than necessary, causing the application to become unresponsive. This was most notable when opening several JRA recordings that had a lot of latency data, since JRockit Mission Control held on to data from recently opened recordings. The workaround was to restart JRockit Mission Control. This has now been fixed.
CR338771
On the Latency Log tab, if you copied one or more events from the Event Table, when you tried to paste the copied data, only the column headers would appear. This has been fixed.
CR330372
New GUI Feature: A command to export charts as images was added to the context menu for all charts displayed on the Management Console.
CR330371
New GUI Feature: A Synchronize Charts command has been added to the context menus of the charts on the Overview tab. This command sets the X-ranges of the other charts on the tab to the range X-range of the chart that triggered the context menu.
CR330371
New GUI Feature: A command to synchronizes the x-ranges of the other charts that triggered was added to the context menu on the Overview tab
CR330369
New GUI Feature: When you freeze a console chart and hoover the mouse pointer over the chart, the chart data value plotted closest to the pointer is circled and the value appears in a tool tip.
CR329869
Filtering has been added to the chart’s attribute selectors to filter attributes based on their names and simplify attribute selection.
CR327148
The Growth column on the Trend tab in the Memory Leak Detector was showing a growth rate of zero bytes/second until at least two old space garbage collections had been performed. However, for some combinations of applications, heap size, and garbage collection algorithms, old space collections were performed so rarely that the growth rate never seemed to show anything other than zero. This has been fixed.
CR327148
The memory leak trend information wasn't updated properly when a generational concurrent garbage collector was used. This has been fixed.
CR319963
In earlier versions of JRockit Mission Control, if you started a JRA recording then pressed the stop button during the recording, JRMC would not show the data from the aborted file. Now, when recording with a R27.5 JRockit JVM or later (or with a R26.x JRockit JVM) if you stop a recording prematurely, it will be downloaded and opened in JRockit Mission Control.
Table 2-3 Changes in JRockit Mission Control 3.0.1
Issue ID
Description
CR334175
The GC Duration attribute displays the complete garbage collection duration, not just the pause times. In this version of JRockit Mission Control, the former Pause Time field has been renamed GC Duration.
CR331770
In previous versions, the JRockit Mission Control MBean Browser did not handle quoted values in MBean ObjectNames well, especially not quoted values containing commas. When encountering such an MBean, the MBean browser would not be displayed. Such an MBean can, for example, be found in WebLogic Event Server. This problem is now fixed.
CR330569
In this version of JRockit Mission Control, the Persistence column from the MBean Browser’s attribute browser has been removed and a command to persist graphs was added to the context menu.
CR326899
You can now filter latencies by type in the JRA Latency Trace tab. In R27.3 this kind of filtering was only available in the Latency Graph and the Latency Log tab.
Stack trace filtering by latency type is a powerful technique that lets the user find out within seconds all the places in the code where the application had a latency problem of a certain kind, e.g. latencies caused by network I/O or latencies that happened because of lock synchronization.
CR326285
JRA recordings could sometimes contain illegal XML characters, which would cause an error when opening them in the GUI. The error typically looks like org.xml.sax.SAXParseException: An invalid XML character. This was caused by not properly escaping characters on the command line when writing the JRA file. This has been fixed.
CR325932
The GCs tab in JRA JRockit Mission Control now has a column called Longest Pauses which shows the longest pause that occurred during a garbage collection.
CR321958
You can now add event types/levels/producers to the operative set and change the color of event types and levels by using a context menu in the Event Types view.
CR321376
The Latency Analysis Tool has been augmented to cover read and write events from FileInputStrems, FileOutputStreams, FileChannels and RandomAccessFiles.
CR320149
This version of JRockit Mission Control has a command on an MBean Browser context menu that allows you to add selected attributes to an existing or new chart in the Overview tab.
CR302688
In earlier versions of JRockit Mission Control, you could not add more than one value to a chart at a time. In this version of JRockit Mission Control, the attribute selector associated with charts allows you to select and add multiple attributes to the chart in a single operation.
Changes in the JRockit Mission Control 3.0.0 Release
Table 2-4 lists changes in this version of JRockit Mission Control.
Table 2-4 Changes in JRockit Mission Control 3.0.0
Issue ID
Description
CR325754
The label Pause Time in the JRA Tool tab GC’s has changed name to Sum of Pauses. This is because this number is the sum of several separate pauses within one garbage collection. To get more information about each garbage collection, look in the Details section on the GC’s tab in the JRA Tool.
CR318629
Due to a bug in the attach framework (Sun bug #6559427), JRockit Mission Control was leaking several handles per locally-running JVM (JVM running on the same machine as JRockit Mission Control is) every time a JRockit Mission Control polls for locally running JVMs. This has been fixed in R27.4.
CR316739
The MBean Browser in the Management Console now uses property keys of ObjectNames to group MBeans. A preference setting has also been added that sets the MBean property key order.
CR315606
Now it is possible to properly disable native sampling, garbage collection sampling, and method sampling when connecting to a 1.4 version of JRockit JVM.
CR311136
JRockit Mission Control now displays folder names correctly when using Japanese characters.
Known Issues
The following issues are known in the JRockit Mission Control 3.0 release:
Issue
Description
CR371385
When using the XWIN X-Client to run the JRockit Mission Control client GUI remotely on a Linux system, you can move the scrollbars in JRockit Mission Control only by using the scrollwheel (thus only vertically).
CR371205
Before starting JRockit Mission Control on Linux, you should have an X-Server running, otherwise the JRockit JVM might crash in GTK.
CR360265
If an application running on a JRockit JVM instance ends during an ongoing JRA recording, the JRA recording will not be transmitted to the JRockit Mission Control client; however the recording will be stored locally and its location will be printed on stderr.
Workaround:
Fetch the recording manually using the location printed on stderr.
CR359954
In the version of JRockit Mission Control that shipped with the JRockit JDK R27.4 the value shown in Heap Usage Before for a garbage collection in a JRA recording is incorrect. The value shown is actually the value of Heap Usage After for the proceeding collection. This will be fixed in the version of JRockit Mission Control that ships with JRockit JDK R27.5.
CR355941
When starting a JRA recording from JRockit Mission Control, you can cause incorrect time values if you edit the time before selecting the recording type. This usually happens when you switch back and forth between seconds and minutes. If you set the number of seconds to less than a minute you can lose your settings and the time value will become zero.
Workaround:
Be sure to set the recording type before editing the time values.
CR359029
When attempting to save a graph as an image on Linux systems (accessible from the graph context menu), the file dialog box might lack a filename input text field and the OK button might not respond. If this is the case, saving the graph as a .png file will not work, and pressing Cancel is your only option.
CR354035
When a trigger rule is active in multiple consoles, the internal state of the trigger in each console might be affected by data from the other consoles in which the trigger is active. The firing of the trigger might become unreliable.
CR356053
Due to a counter overflowing, the exception counting APIs in JMAPI and in the JRockit Management Console return negative values if too many exceptions (more than 231) have been thrown in the lifetime of the JVM.
CR355912
When JRockit Mission Control shipped with the JRockit JDK R27.1 is run with a Japanese or Traditional Chinese locale on an installation of Windows where the system font does not in itself contain glyphs for that language (such as in English editions of Windows, by default), bold fonts in the Memory Leak Detector will be incorrectly rendered as boxes. This will be fixed in the JRockit Mission Control shipped with the JRockit JDK R27.5.
CR355590
In the instance graph of the Memory Leak Detector, false references from a Global JNI Handle might be shown. Any such reference where the tooltip says “Number of handles:1” might be false. Similarly, but less frequently, references from a Threadroot:(MemLeak Socket Reader) are always false. These references are temporary references used in the implementation of the Memory Leak Detector in JRockit Mission Control. They do not keep objects alive.
CR355306
If the default Windows temporary directory (java.io.temp) is on a FAT file system, some tools will not be able to discover local processes. These tools include JRockit Mission Control, jrcmd and jconsole.
For security reasons, local monitoring and management is only supported if your default Windows temporary directory is on a file system that supports setting permissions on files and directories (for example, on an NTFS file system). It is not supported on a FAT file system that provides insufficient access controls.
CR351557
In some rare cases, you might get a Script Debugger error when launching the Online Help in JRockit Mission Control on Windows. This can occur if you have deselected the option Browsing>Disable script debugging (Other) in Internet Explorer and have a script debugger installed. If you click No when prompted, everything will work as designed.
Workaround
Open the Tools menu in IE and select Internet Options... Under the Browsing section, select Disable script debugging (Other).
CR339469
Copying event information from the Thread Latency Log table to the clipboard does not work properly. Only the header information will be copied. This issue will be fixed in the JRockit Mission Control version that ships with JRockit JDK R27.5.0.
CR338731
Some events in the JRA latency recordings have their thread ID’s set to 0. In particular, this applies to JVM Event Wait->Signalling thread, Java Synchronization->Last holder thread and Java Synchronization->Holder thread.
CR337475
In a JRA recording, the number of allocated TLA (Thread Local Areas) is recorded, as well as the preferred size of a TLA (in bytes). The JRA GUI will multiply these values to get the number of bytes allocated in TLAs during the entire recording; however, the size of the TLAs actually used can sometimes be a bit smaller than the reported size (the preferred size is only a preferred size; fragmentation can cause the TLAs to become smaller) and the value printed in the GUI can be overestimated.
CR333156
Currently, if you are running JRockit Mission Control on a 1.4 version of the JRockit JVM shipped with the JRockit JDK R27.1, you cannot use the JRA Recording Wizard to start JRA Recordings with latency data. RMP (the legacy management protocol) does not currently provide information about the recording capabilities of a JRockit JVM instance.
Workaround
To start a JRA recording with latency data, please use on of the following workarounds:
The label Pause Time in the JRA Tool tab GC’s has changed name to Sum of Pauses; however, this change has not made it to the translated Japanese and simplified Chinese versions.
CR323065
If JRockit Mission Control is started on RHEL4 using the bin/jrmc executable, the online help may not work. Instead of opening the help browser, a dialog saying “Couldn’t open help on {0}” is shown.
Workaround:
Install a supported version of XULRunner, Firefox, or Mozilla.
When looking at predecessors in the Methods tab of the JRA Tool, sometimes the percentage can become lower, even though the nodes are not branching. This is caused by stack depth not being high enough for some of the samples participating in calls leading through the method being looked at. You can avoid this by increasing the Trace Depth in the JRA Recording Wizard.