![]() ![]() ![]() ![]() ![]() ![]() |
This document contains important details for BEA JRockit R26 JDK. It contains information on the following subjects:
The BEA JRockit R26 JDK is subject to the terms and conditions of the BEA JRockit Binary License Agreement, see the BEA License Agreement.
BEA JRockit JDK is available as a standalone application. For instructions on installing BEA JRockit, please see Installing BEA JRockit JDK.
The documentation that is connected to a specific release of BEA JRockit is located here:
http://edocs.bea.com/jrockit/releases/index.html
BEA JRockit R26.4 provides, apart from full support for J2SE 5.0 on all supported platforms, the following areas of improvement:
The performance of BEA JRockit has gone through major improvements for low latency applications by the following additions:
See Figure 3 for an illustration of how the performance have been improved with the above improvements.
SPARC performance running BEA WebLogic Server has been improved by approximately 15% compared to BEA JRockit R26.3.
The following tuning options have been added in this release:
For complete information on how to use all tuning options in BEA JRockit, please see the BEA JRockit Reference Manual.
Note: | The Sparc version of BEA JRockit is a 64-bit JVM only. |
This has happened with BEA JRockit:
The following CRs have been corrected for the BEA JRockit R26.4 release.
When JRockit 1.4.2_10 R26.3 calculates the SUID for a class to be serialized it includes the synthetic bits in the calculation, which generates a SUID that differs from the Sun 1.4.2_10 and BEA JRockit 1.4.2_08 R24. This problem causes serialization to fail.
Synthetic attributes are included in a class when the class references a class pointer
ATestClass.class or uses assertions.
This means that RMI communication between 1.4.2_10 R26.3 and Sun 1.4.2_10 can fail. RMI communication between BEA JRockit 1.4.2_10 R26.3 and BEA JRockit 1.4.2_08 R24.5 can also fail in the same way. Serialized classes, stored in a database, might also fail to be loaded.
|
|||
For a description of these options, please see the
BEA JRockit Reference Manual.
|
|||
The following CRs have been corrected for the BEA JRockit R26.3 release.
In earlier BEA JRockit R26 versions, on Windows operating systems, BEA JRockit could sometimes expose a problem in the OS related to multimedia timers that caused the system time to be adjusted backwards.
|
|||
Explicit font support for Asianux, part of Red Flag Linux, has been added for BEA JRockit 1.4.2, keeping the support for Red Flag 4.1 font patch
CR200703 for
LANG=zh_CN.GB2312 locale. The font support is based on the Red Hat Linux font support.
|
|||
Previously a problem regarding the handling of TrueType fonts for certain font files caused a call to
java.awt.Font.getXXX() methods that resulted in an IllegalArgumentException being thrown. This issue has now been fixed. (See, CR252610 for more information).
|
|||
A race condition existed in BEA JRockit when the Memory Leak Server was stopped immediately after a client had connected, which caused sockets to be left in
CLOSE_WAIT state. On Linux, this could eventually cause the BEA JRockit process to run out of file descriptors. This problem has now been fixed.
|
|||
For more information on how to use the options, see
Reference Manual.
|
|||
The new option
-XXdisableGCHeuristics disables the dynamic garbage collector selection heuristics when -Xgcprio is used. The JMAPI for changing garbage collectors in runtime can still be used.
|
|||
The BEA JRockit JRE installer in Silent mode will now be correctly installed if the
USER_INSTALL_DIR in the XML-file has been set.
See CR265227 for the previous known issue.
|
The following CRs have been corrected for the BEA JRockit R26.2 release.
In earlier releases of the BEA JRockit JDK 1.4.2, it was necessary to specify
-Xmanagement:class=com.JRockit.management.rmp.RmpSocketListener on the command line to start up the Management Server. This can now be done by simply specifying -Xmanagement or by setting the management server port with jrockit.managementserver.port .
|
|
For some garbage collectors, the minimum block size value, set by
-XXminBlockSize , was also (incorrectly) used as thread-local area size. With this fix, increasing the -XXminBlockSize value will no longer affect the thread-local area size.
If you have been using
-XXminBlockSize to adjust the thread-local area size, you now must also set -XXlargeObjectLimit and -XXtlaSize to the same value as you set -XXminBlockSize , as described in the
BEA JRockit Reference Manual.
|
|
The following CRs have been corrected for the BEA JRockit R26.0 release.
The following issues are known in BEA JRockit R26:
If you are using BEA JRockit in conjunction with a native library that relies on OS signals you may experience crashes due to a signal handling conflict between BEA JRockit and the native library.
|
|||
Due to a bug in the Jikes 1.22 Java compiler, it cannot be used for compiling 1.4.2 Java code using the class libraries shipped with BEA JRockit R26.0.0 or newer releases.
The bug has been reported and is described at:
http://sourceforge.net/tracker/index.php?func=detail&aid=1548770&group_id=128803&atid=712760
|
|||
In BEA JRockit 26.4, JRA Recordings always report that the heap usage is zero after a garbage collection with a single-spaced garbage collector. The
-Xverbose :memory and -Xverbose:memdbg printouts report the correct value for the heap usage after garbage collection.
|
|||
Upgrading from BEA WebLogic Platform 8.1 SP5 to 8.1 SP6 and running it on BEA JRockit R26 SP3 can result in a performance regression of up to 10%.
To avoid this regression, you can improve the performance of memory intensive applications by setting the command-line options -XXtlaSize:
<default 2kB> and -XXlargeObjectLimit: <default 2kB>. See the
“Special Note for WLP 8.1 SP6 Users Running on BEA BEA JRockit R26.3” for instructions on how to do this.
|
|||
When you expand types in the Type Graph in the BEA JRockit Memory Leak Tool, BEA JRockit can hang and become unresponsive while consuming CPU resources. This issue was introduced as a regression in BEA JRockit R26.2.
|
|||
The synchronization code in
java.util.Random.next() has been optimized for the case where there is no contention, i.e. the java.util.Random object is used by only one thread. A drawback of this optimization is worse performance if the object is used heavily in several concurrent threads. This typically happens if the convenience method java.lang.Math.random() is used.
|
|||
A catch block immediately following “
return x.y; ” where the variable x points to null, will not catch the null-pointer exception. The exception will be caught in the next catch block.
|
|||
BEA JRockit 1.4.2 R26.2 and R26.3 throw a
java.lang.NullPointerException when passing a null argument to java.lang.String.getBytes(String charsetName) , while BEA JRockit 1.4.2 R24 did not. The behavior is unspecified but the change might cause problems when running TIBCO with XML messaging on BEA JRockit 1.4.2 R26.2 or R26.3.
|
|||
Occasionally, when using a JVMTI Java debugger, breakpoints are not hit. This issue can arise with any R26 version of the product.
|
|||
Buffers that have been allocated through
ByteBuffer.allocateDirect() would not be released, even when discarded by the application, which causes C heap memory leaks.
|
|||
BEA JRockit crashes when optimizing method. This issue can be identified by the following stack trace:
|
|||
|
|||
|
|||
BEA JRockit R26.0.0 on Linux IA32 can experience problems setting up memory for object allocation. It will manifest itself through this printout (and then exit BEA JRockit):
[JRockit] ERROR: Fatal error in JRockit during memory setup phase. Try to reduce the heap size using -Xmx:<size>m, i.e. “-Xmx:16m”. Could not create the Java virtual machine.
|
|||
IA64 RedFlag 4.1 creates broken core files when programs crash. This makes it impossible for BEA JRockit engineers to resolve customer issues on RF41/IA64.
This has been reported at:
http://www.redflag-linux.com/bugzillaAX/show_bug.cgi?id=1320
|
|||
Slow startup because of a hang in
java.net.PlainSocketImpl.initProto() , which typically is called when creating the first Socket or ServerSocket.
In BEA JRockit 5.0 R26 the network stack is configured so that IPv6 is used in preference to IPv4 when it is present.
During initialization of the network stack, the network code connects a socket to its own loopback interface to set up some data structures. Blocking this connection (e.g. with a firewall) will cause the initialization code to wait for a socket timeout, after which the system falls back on using IPv4.
Either set
-Djava.net.preferIPv4Stack=true , which forces Java to use IPv4 instead, or you disable IPv6 entirely in the system. The proper fix is to allow IPv6 traffic from localhost to localhost.
For more information, see the Sun documentation:
http://java.sun.com/j2se/1.4.2/docs/guide/net/ipv6_guide/#ipv6-networking
|
|||
The BEA JRockit in Silent mode will not be correctly installed if the
USER_INSTALL_DIR in the XML-file has been set to anything other than the default installation path.
During the installation, the registry settings will not be set correctly, causing the
.jar file association to fail. The files Java.exe and Javaw.exe will not be copied to %SystemRoot%\System32 either.
|
|||
An issue running HP OpenView Java Diagnostics Profiling Agent may cause crashes with BEA JRockit R26.0.0.
|
|||
In rare cases BEA JRockit can print incorrect information about locks in the stack dump, given by the Ctrl-Break handler or by the Management Console/MAPI.
When a lock is taken by a method that has been optimized in a certain way (inlining), this lock can be printed as being taken, not only on the correct frame, but also as being taken on one or several nearby frames. This does not affect how BEA JRockit treats the lock when executing, only the stack dump itself.
|
|||
On Windows x64 and Itanium, when using the BEA JRockit JRE console mode installer to remove a previously installed BEA JRockit, the uninstall will be interrupted and the following message is displayed:
|
|||
A problem regarding the handling of TrueType fonts for certain font files may cause a call to
java.awt.Font.getXXX() methods that results in an IllegalArgumentException being thrown.
This problem has been reported to Sun as a problem found in Sun JDK 5.0 Update 4 in bug #6349101 (
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6349101). This problem can theoretically occur on all platforms but has been observed on RedFlag Linux Advanced Server 5.0 when the RPM package
ttfonts-zh_TW-5.0-2AX.noarch.rpm is installed and the user is requesting a font with Chinese locale.
Uninstall the package
ttfonts-zh_TW-5.0-2AX . This solves the problem but will at the same time remove those fonts from the system, which may cause other problems when trying to display Chinese text. If you try this, you should try to replace the use of the removed font with some other available font on the system.
|
|||
If
ulimit -v is used on Linux to limit the virtual memory usage, BEA JRockit may crash if the limit is set too low. The x64 version of BEA JRockit requires a much larger setting because it reserves addresses for compiled code at startup. The BEA recommendation is to not use the ulimit -v setting at all.
|
|||
BEA JRockit needs enough virtual memory (address space) to be able to run properly. Note that a high value on allowed virtual memory does not imply high memory consumption. On Linux, the amount of available virtual memory can be changed, typically by the command
ulimit -v <amount> .
The default is an unlimited address space, which is the recommended.Do not change this default, since it risks having BEA JRockit running out of address space, which in turn causes BEA JRockit to terminate immediately.
|
|||
When doing a JRA recording on Windows XP x64, the JRA recording incorrectly displays that it has been done on Windows 2003 Server. The current implementation of BEA JRockit cannot separate between the two different operating system’s version information.
|
|||
Java applications (such as Eclipse) may hang on Linux distributions which use the “gamin” File Alteration Monitor implementation, for example RHEL4. This is due to a bug in gamin’s handling of signals.
Use “signal chaining” by loading the libjsig.so library. Do this by executing
> export LD_PRELOAD=$JDK_HOME/jre/lib/i386/libjsig.so before starting BEA JRockit.
For more information on signal chaining see:
http://java.sun.com/j2se/1.5.0/docs/guide/vm/signal-chaining.html
|
|||
BEA JRockit’s nursery pool can be invalidated when the garbage collection strategy changes. According to the Java 2 Platform SE API documentation, a pool that has been invalidated may return null. Programmers must therefore assume that
MemoryPoolMXBean#getUsage() and MemoryPoolMXBean#getPeakUsage() may return null at any time.
|
|||
The VerboseGC demo, located at
\demo\management\VerboseGC\VerboseGC.jar , can throw a NullPointerExcecption when used with a BEA JRockit that has a nursery.
|
|||
In Windows, faulting code can be caught by Structured Exception Handling (SEH). The Microsoft C compiler allows a special construct, see below:
This sets up an SEH handler, which would get called if the code in the
__try block fails (for example, a read/write to an illegal address).
However, on 64-bit Windows (IA64 and x64), BEA JRockit uses a new exception handling feature known as vectored exception handlers. The vectored exception handlers will be called before any SEH handler gets called. If the BEA JRockit vectored exception handler detects a fault in native code, it will make BEA JRockit produce a crash dump.
|
|||
![]() ![]() ![]() |