Skip Headers
Oracle® JRockit JDK Release Notes
Release R28

Part Number E15066-27
Go to Documentation Home
Home
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
PDF · Mobi · ePub

2 New Features and Changes in Oracle JRockit JDK R28

This chapter describes the new features and changes in Oracle JRockit R28.x releases.

It contains the following topics:

2.1 Changes in R28.3.2

This section describes the changes in Oracle JRockit JDK R28.3.2:

2.1.1 New Default Value for the -XX:+CheckStacks Command-Line Option

In JRockit versions prior to R28.3.2, the -XX:+|-CheckStacks option was disabled by default, meaning that JRockit did not explicitly check for stack overflows on a JNI method entry.

The -XX:+|-CheckStacks option in JRockit R28.3.2 and later versions will be enabled by default. In very rare cases, the additional overhead of stack overflow detection may result in low performance. This overhead can be avoided by explicitly disabling the stack checking by using the -XX:-CheckStacks option.

It is also possible, in very rare cases, that the system starts throwing StackOverflowErrors after enabling -XX:+|-CheckStacks. This happens only if the thread was within one page of memory from overflowing the stack. In this case, the recommended resolution is to increase the stack size by a small amount using the -Xss option, not by disabling -XX:+|-CheckStacks. For more information about the -Xss option, see Oracle JRockit Command-Line Reference.

2.1.2 New Command-Line Option to Disable Garbage Collection of Constant Pool

Applications that use a lot of reflection or serialization would suffer from the performance overhead of garbage collection activity that is required to help prune the runtime shared constant pool. This overhead can be eliminated with the new command line option -XX:-UseCPoolGC. Use of this option may result in native memory leaks.

For more information about this option, see -XX:-UseCPoolGC in Oracle JRockit Command-Line Reference.

2.1.3 New Verbose Option for Shutdown Report

A new parameter shutdown has been added to the -Xverbose option. When you set this parameter, JRockit provides information about any event that has triggered a normal shutdown of the JVM.

For more information, see the description of -Xverbose in Oracle JRockit Command-Line Reference.

2.2 Changes in R28.2.3

This section describes the changes in Oracle JRockit JDK R28.2.3.

2.2.1 New Default Value for the -XX:MaxLargePageSize Command-Line Option

In earlier versions of JRockit R28, the default value of the -XX:MaxLargePageSize option was zero, which means there was no limit for the maximum size for the large pages and the value was specified by the operating system.

The default value for this option in JRockit R28.2.3 and later versions will be 256 MB.

2.3 Changes in R28.2.2

This section describes the changes in Oracle JRockit JDK R28.2.2.

2.3.1 Fixed Issues in Finalization

Earlier versions of JRockit R28 suffered from an issue where some finalizers may never be executed. This issue was resolved in JRockit R28.2.2. Because JRockit uses finalizers internally to manage class constant pool data, a side effect of fixing this issue is that applications that continuously load and access the constant pool data of classes using sun.reflect.ConstantPool, may experience an increase in the number of finalizable objects stored on the Java heap after upgrading to R28.2.2 or later. In very rare cases, this additional pressure on the memory subsystem may result in performance issues (such as higher heap consumption or more GC activity) or even OutOfMemoryErrors. It is almost always possible to resolve such performance issues by modifying the application to eliminate redundant class loading.

2.4 Changes in R28.2.0

This section describes the changes in Oracle JRockit JDK R28.2. These changes are:

2.4.1 Improved JRockit Flight Recorder Heap Statistics Events

In earlier versions of JRockit R28, long garbage collections resulted in application pauses during profiling recording.

To avoid the long application pauses, the JRockit Flight Recorder Heap Statistics events have been improved.

2.4.2 Command-Line Options to Filter Exception Logging and Events

The new command-line option -XX:ExceptionTraceFilter and the new diagnostic command exception_trace_filter filter JVM exception logging and JRockit Flight Recorder exception events based on the exception type specified.

For more information about these commands, see Oracle JRockit Command-Line Reference.

2.5 Changes in R28.1.5

This section lists the changes in Oracle JRockit JDK R28.1.5.

2.5.1 JRockit Mission Control Samples are No Longer Installed by Default

The installer for Oracle JRockit JDK R28.1.5 with Oracle JRockit Mission Control 4.0.1 will not install JRockit Mission Control samples by default. You must select the optional component Demos and Samples to install JRockit Mission Control samples.

For more information about installing the product, see Oracle JRockit Installation and Upgrade Guide.

2.6 Changes in R28.1.0

This section lists the changes in JRockit JDK R28.1.0. These changes are:

2.6.1 Improved Garbage Collection

In the genpar garbage collection mode, when the nursery runs out of memory in the old generation, objects that are identified for promotion to the old space are promoted within the nursery and this resulted in fragmentation of the nursery. This situation is known as promotion failure.

In R28.1, the JRockit JVM prevents promotion failure by triggering an early old collection for those young collections that are running out of memory.

2.6.2 Command-Line Option to Specify the Receive Buffer Size

When reading from network sockets, the size of the receive buffer can be limited by using the new command-line option, -XX:MaxRecvBufferSize.

For more information about this option, see -XX:MaxRecvBufferSize in the Oracle JRockit Command-Line Reference.

2.6.3 Enabling JVM Crash When an Out-of-Memory Error Occurs

Oracle JRockit R28.1 introduces the command-line option -XX:[+|-]CrashOnOutOfMemoryError. If this option is enabled, when an out-of-memory error occurs, the JRockit JVM crashes and produces crash files. The state of the JVM before a crash is saved to a core dump file for off-line analysis.

For more information about this option, see -XX:+|-CrashOnOutOfMemoryError in the Oracle JRockit Command-Line Reference.

2.6.4 Collecting and Packaging Flight Recording Data from Disk Buffers

This release of Oracle JRockit introduces the command-line tool oracle.jrockit.jfr.tools.ConCatRepository, that allows you to extract JRockit Flight Recorder data that has been written to disk, but not handled and packaged as a flight recording, and then create a flight recording from it. This feature is useful when you have flight recording buffers on disk and the JVM terminates in such a way that .jfr files are not assembled to a complete flight recording file.

For more information, see the Oracle JRockit Flight Recorder Run Time Guide.

2.7 Changes in R28.0.1

This section lists the changes in JRockit JDK R28.0.1.

2.7.1 Default MaxCodeMemory on Linux IA32 with Large Pages Increased to 64 MB

The default maximum code memory on Linux IA32 with large pages was 32 MB in R28.0.0.

In R28.0.1, the default value has been changed to 64 MB.

For more information, see -XX:MaxCodeMemory in the Oracle JRockit Command-Line Reference.

2.8 New Features and Changes in R28.0.0

The following are the new features and changes in JRockit JDK R28.0.0. These changes are:

2.8.1 Change in Thread Suspension Mechanism

The mechanism to stop threads in the JVM has been changed. In previous releases of the JRockit JVM, threads were suspended (for performing garbage collection, for example) by sending signals. In JRockit JVM R28.0, the threads check periodically whether they should self-suspend.

This change does not result in visible behavioral changes, but it makes the JRockit JVM easier to maintain and less error-prone.

2.8.2 Ability to Generate HPROF-Formatted Heap Dumps

Heap dumps can now be generated in the HPROF binary format, which can be parsed using heap analysis tools. You can use the -XX:+HeapDumpOnOutOfMemoryError or -XX:+HeapDumpOnCtrlBreak command-line options to generate Java heap dumps in HPROF binary format on OutOfMemory errors. You can also generate heap dumps in HPROF format by using the hprof diagnostic command and through JRockit Mission Control.

For more information, see "Generating Java Heap Dumps in the HPROF Binary Format" in the Oracle JRockit Diagnostics and Troubleshooting Guide.

2.8.3 Improved Logging for Code Generation and Optimization

The granularity of logging for code generation and optimization has been increased, to enable faster diagnostics and troubleshooting. The information in the outputs of the -Xverbose:opt and -Xverbose:codegen options is now more detailed. For more information, see the Oracle JRockit Command-Line Reference.

2.8.4 Better Control Over Code Optimization Through Directives

In previous releases of the JRockit JVM, you could control code optimization by specifying directives in an optfile and then using the -Djrockit.optfile property to indicate the name and location of the optfile.

In JRockit JVM R28.0, the format for specifying compiler-control directives in the optfile has been extended and improved to enable control over code optimization at a more detailed level. A new diagnostic command-line option, -XX:OptFile, is available for specifying the name and path of the optfile.

For more information, see "Specifying Optimization Directives" in the Oracle JRockit Diagnostics and Troubleshooting Guide.

2.8.5 Garbage Collection Strategy Does Not Change at Run Time

In JRockit JVM R28.0, when you specify the throughput or pausetime garbage collection mode by using the -Xgc command-line option, the strategy associated with the specified mode— by default, genpar and gencon respectively—is used throughout the run time. The garbage collector does not change between generational and nongenerational garbage collectors during the run time.

This change has been made to reduce the extent of underterministic garbage collection behavior due to strategy changes during run time.

Note that the -XgcPrio option continues to work in R28.0. Oracle recommends that you use the -Xgc option instead of using the -XgcPrio option.

For more information about -Xgc, see the Oracle JRockit Command-Line Reference.

2.8.6 Large Objects Are Allocated in the Nursery

Oracle JRockit JVM R28.0 allocates large objects in the nursery if the size of the object is within the limit specified by the -XXtlaSize:wasteLimit command-line option.

This change improves the utilization of the nursery and reduces the frequency of old-space garbage collections.

For more information about -XXtlaSize:wasteLimit, see the Oracle JRockit Command-Line Reference.

2.8.7 Single Command-Line Option to Specify Compaction Behavior

Oracle JRockit R28.0 supports a new command-line option that enables you to specify compaction-related behavior: -XXcompaction. This option accepts all the parameters for compaction: compaction percentage, maximum number of references, and so on.

All the other compaction-related options are deprecated in R28.0.

For more information about -XXcompaction, see the Oracle JRockit Command-Line Reference.

2.8.8 Changes in the JMX Agent

In JRockit JVM R28.0, after the local management service starts, it remains active until the JVM is terminated.

In previous releases, the performance counter memory used to leak, and new addresses of the JMX connector were written during a memory leakage. Therefore, the JMX client was reading the wrong address of the JMX connector. This issue has been fixed in R28.0.

To allow RMI communication between the JRockit JVM server and a client through a firewall, two ports (RMI Registry and RMI Server) are required to configure the firewall. In previous releases, the RMI Server port number was generated randomly on the JRockit JVM server; so it was not possible to configure the firewall in advance. In JRockit JVM R28.0, the JMX agent enables you to select the same port number for the RMI Registry and the RMI Server. Therefore, you can use the default JMX agent for RMI communication through a firewall.

You can set the JMX agent properties by using the system properties or by using the -Xmanagement command-line option. For more information about the JMX agent system properties, see Appendix B "JMX Agent-Related –D Options" in the Oracle JRockit Command-Line Reference.

2.8.9 Compressed References for Larger Heaps

Oracle JRockit JVM R28.0 supports up to 64 GB compressed references for various heap sizes. You can define the compressed reference size during the JVM startup by using the -XXcompressedRefs command-line option.

For more information about -XXcompressedRefs, see the Oracle JRockit Command-Line Reference.

2.8.10 Changes in Heap Sizing

In JRockit JVM R28.0, the heap grows faster than before. The JVM also ensures that the heap size grows up to the maximum Java heap size (-Xmx) before an OutofMemory error is thrown. In addition, the default value of the -Xmx option is changed from 1 GB to 3 GB on 64-bit platforms.

The JRockit JVM shrinks the heap if it is unused or if other applications require more physical memory.

In the previous releases, the JVM used to crash when the heap size reduced from a very large size to a small size. This issue has been fixed in R28.0.

2.8.11 Change in Class and Code Garbage Collection

The pause time during the old collection of code and class garbage collections has been removed in Oracle JRockit JVM R28.0. With this change, the code and class garbage collections are mostly concurrent in R28.0.

2.8.12 New Command-Line Options in R28.0

The Oracle JRockit JVM R28.0 supports several new command-line options.

For more information, see Appendix A, "Changes in Command-Line Options" in the Oracle JRockit Command-Line Reference.

2.8.13 Command-Line Options Deprecated in R28.0

Some command-line options have been deprecated in Oracle JRockit JVM R28.0.

For more information, see Appendix A, "Changes in Command-Line Options" in the Oracle JRockit Command-Line Reference.

2.8.14 Command-Line Options Changed to the HotSpot Format in R28.0

In Oracle JRockit JVM R28.0, the format of several command-line options has been changed to the HotSpot format: -XX:+|-option (for example, -XX:+UseClassGC).

For a list of the command-line options that have been changed to the HotSpot format, see Appendix A, "Changes in Command-Line Options" in the Oracle JRockit Command-Line Reference.