Itanium 1.6.0_21 Release Notes

Please see the Update Release Notes Index for links to the Itanium® architecture port Release Notes for each update and a link to the initial Java SE 6 Release Notes.

About 1.6.0_21 (6u21) for the Itanium® architecture

1.6.0_21 for the Itanium® architecture is a port of JDK 6 update 21 to the Itanium® (64 bit) architecture.

The full internal version number for this update release is 1.6.0_21-b0702 (where "b" means "build"). The external version number is 6u21. Included in JDK 6u21 for the Itanium® architecture is version 17.0 of the Java HotSpot Server Virtual Machine.

The following JDK, JRE tools are not included in JDK, JRE 6u21 for the Itanium® architecture release:

  • Java Plug-in
  • Java Web Start
  • Java Update
  • JavaDB (JavaDB is included only into Linux self-extracting JDK distributive)
  • Java VisualVM

Please refer to JDK tools and Utilities for JDK tools description.

Only offline installation is available for JDK, JRE 6u21 for the Itanium® architecture.

Changes in 1.6.0_21 (6u21) for the Itanium® architecture

  • See changes in 1.6.0_21 common for all platforms in Java SE 6 Update 21 Release Notes.
  • Supported System Configurations

    For 6u21, support has been added for Windows Server 2008 R2 and SP2.
    Red Hat Enterprise Linux 4.0 is not supported.

  • Features and Itanium Specific Command Line Options

    Several new Itanium specific enhancements are available in the JDK 6u21 for the Itanium® architecture. The features may improve performance on some workloads. They can be switched on/off using the following command line options:

    • –XX:+DoGlobalScheduling – turns on the Itanium global instruction scheduler which tries to reorder compiled code instructions for better performance.

      There are additional command line options to control the scheduler: XX:+DoControlSpeculation, XX:+DoDataSpeculation. These two options turn on special Itanium instruction scheduler modes in which it tries to generate control-speculative and data-speculative memory reads respectively which can sometimes improve performance. These two options can take effect only if DoGlobalScheduling is also enabled.

      All three options are off by default. All three are turned on (–XX:+DoGlobalScheduling XX:+DoControlSpeculation, XX:+DoDataSpeculation) if XX:+AggressiveOpts is specified. Please note that other combinations of these options (besides all three off or all three on) were not comprehensively tested and should be considered experimental. Particularly, –XX:+DoGlobalScheduling (and consequently –XX:+AggressiveOpts which also turns it on) is not compatible with –XX:+SpecialStringEquals.

    • XX:TicksTimeInterval=<value> - controls the optimization of gettimeofday system calls on Linux.

      It may noticeably boost performance on workloads which intensively call this function. The optimization caches the values returned by gettimeofday in thread local variables to avoid the system call for certain time intervals. This optimization is applied in –Xcomp or –Xmixed modes only.

      • XX:TicksTimeInterval=0 - disables the optimization (default).
      • XX:TicksTimeInterval=<-1 or any negative integer value> - enables the optimization with the default time interval (about one millisecond).
      • XX:TicksTimeInterval=<positive integer value> - specifies the interval in the units used by ITC (internal time counter).

    The G1 garbage collector is still experimental and is not recommended for production use yet.

  • Performance

    The following set of command line options is recommended for running high performance server applications:

    • XX:+AggressiveOpts
    • XX:+AggressiveHeap
    • XX:ParallelGCThreads=2
    • XX:InterpreterProfilePercentage=10
    • XX:CompileThreshold=35000
    • XX:OnStackReplacePercentage=80
    • XX:PermSize=256m
    • XX:MaxPermSize=256m
    • XX:AllocatePrefetchStepSize=128
    • XX:AllocatePrefetchStyle=2
    • XX:AllocatePrefetchDistance=1024
    • XX:+UseCompressedOops if heap size is less than 32GB
    • Xmx, Xms, Xmn should have sufficiently large values.
    • For example, Xms6656m Xmn5120m Xmx6656m or Xms26624m Xmn21248m Xmx26624m. The value of the –Xmn option should be less than about 80% of the –Xmx value.

    Supported System Configurations

    Platform Version Desktop Managers Browsers JRE JDK
    Windows 64 bit
    Windows IA64 Windows Server 2003 SP2 Windows/Active for Windows N/A 64-bit Install 64-bit Install
    Windows Server 2008 SP2, R2 for Itanium-based Systems
    Linux 64 bit
    Linux IA64 SUSE Enterprise Linux Server 10 SP2,
    SUSE Linux Enterprise Server 11
    N/A N/A 64-bit Install 64-bit Install
    Red Hat Enterprise Linux 5.0 U2

    JDK, JRE Installation for Microsoft Windows (Itanium® architecture)

    The installation procedure installs the JDK or JRE 6u21 but not the Java Plugin or Java Web Start.

    To install, download jdk-6u21-windows-ia64.exe or jre-6u21-windows-ia64.exe file and then follow the 32-bit Windows JDK installation or 32-bit Windows JRE installation "Windows Offline Installation" instructions.

    Note, during JRE installation Java executables including java.exe are not copied to the Windows System directory.

    JDK, JRE Installation for Linux (Itanium® architecture)

    The installation procedure installs the JRE or JDK 6u21 but not the Java Plugin or Java Web Start.

    The JDK, JRE for Linux 64-bit comes bundled in two install formats:

    • Linux self-extracting files jdk-6u21-linux-ia64.bin, jre-6u21-linux-ia64.bin and
    • Linux RPM in self-extracting files jdk-6u21-linux-ia64-rpm.bin, jre-6u21-linux-ia64-rpm.bin.

    To install, download the necessary file and then follow one of the 32-bit Linux JDK RPM Installation, 32-bit Linux JDK Self-Extracting Binary Installation or 32-bit Linux JRE RPM Installation, 32-bit Linux JRE Self-Extracting Binary Installation instructions.

    Known installation issues

    • On Linux systems, when the *-rpm.bin file is used for JDK (JRE) installation, JDK (JRE) of a lower version cannot be installed if JDK (JRE) of a higher version is already installed on the same system.

      For example, JDK (JRE) 6u16 cannot be installed using the jdk(jre)-6u16-linux-ia64-rpm.bin file if, on the same machine, JDK (JRE) 6u21 was previously installed using jdk(jre)-6u21-linux-ia64-rpm.bin.

      Installation reports:

      Preparing... ########################################### [100%]
      package jdk-1.6.0_21-fcs (which is newer than jdk-1.6.0_16-fcs) is already installed

      JDK (JRE) 6u16 is not installed.

      Workarounds are:

      • Uninstall JDK (JRE) 6u21, then install JDK (JRE) 6u16 using jdk(jre)-6u16-linux-ia64-rpm.bin, or
      • Install JDK (JRE) 6u16 using the jdk(jre)-6u16-linux-ia64.bin file

      If JDK (JRE) 6u21 was installed using jdk(jre)-6u21-linux-ia64.bin, installation of JRE (JDK) 6u16 using jre(jdk)-6u16-linux-ia64.bin passes successfully.

      On Windows systems after installation of JDK (or JRE) the registry keys "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.6" (for JDK), "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6" (for JRE) should contain the value "JavaHome" with the full path name of the directory in which JDK (or JRE) of the highest version is installed.

      However, in 6u17 and earlier releases of JDK, JRE for the Itanium® architecture, after installation of JDK (or JRE) of a lower version on top of a higher version (for example, 6u16 on top of 6u21), "JavaHome" contains the path to the last installed JDK (or JRE) instead of the path to the JDK (or JRE) of the highest installed version. After uninstallation the value is removed.

      The workaround is to put the correct value to the Windows registry manually. A more accurate workaround is to uninstall the previously installed JDK (or JRE) and install the required version. See Deploying the JRE on Windows for more details about registry values.

      The issue does not exist in 6u18 and later releases of JDK, JRE for the Itanium® architecture.

    Known issues and limitations

    • The JVM can intermittently crash with SIGILL on Linux RHEL4 for the Itanium® architecture when executed from an NFS mounted directory.

      This is a known bug in kernels of versions less than 2.6.22. Processors older than Montecito (e.g. Madison, McKinley) are not affected.

      RHEL4 (Nahant Update 5), kernel 2.6.9-55.EL has this bug. In RHEL5.2(Tikanga), kernel 2.6.18-92.el5 the bug is fixed.

      Possible workarounds are:

      • Run Java from a local directory.
      • Migrate to a newer kernel in which this bug is fixed, for example, to RHEL5.2 or RHEL4.6.
      • Apply the patch linux-2.6-mm-ia64-flush-i-cache-before-set_pte.patch (from kernel-2.6.18-92.el5.src.rpm) to your kernel.
    • The JVM can intermittently crash on Windows 2003 SP1 for the Itanium® architecture when it is run from network drive.
    • A workaround is to install the JRE or JDK on a local disk. The problem disappears after installing "Windows Server 2003 Service Pack 2 for Itanium-based Systems"
    • Serviceablity Agent (SA) issues:
      • SA can fail to show thread stack frames; instead it throws InternalError with diagnostic message ‘Failed to decode stack’.
        Workaround: for running processes use JVMTI Agent.
      • SA can fail to show some local variables of stack frames; instead it throws an unexpected exception (typically, NullPointerException or AssertionFailure).
        Workaround: try to start JVM with the –XX:+FullSASupport option.
      • Sometimes SA can show incorrect values for Long and Double locals.
        Workaround: for running processes use JVMTI Agent.
      • On Windows SA does not accept a dump file generated by default (the MiniDumpNormal type of information that is written to the minidump file).
        Workaround: specify the –XX:ErrorDumpLevel=2 JVM option (MiniDumpWithFullMemory type).
      • jstack (an experimental tool) does not print the mixed mode (both Java and native C/C++ frames) stack trace when the option -m is specified; an exception with diagnostic "not yet implemented (debugger does not support CDebugger)!" is thrown. The reason is that CDebugger is not implemented for the Itanium® architecture.
        Workaround: do not use the -m option or use a different tool.
    • Java 6 does not support Sun PKCS#11 and SunMSCAPI providers for Windows 64-bit. These providers are not a part of Java 6 for Windows Itanium® architecture. If necessary, one can use implementations of these providers offered by third parties.