On i5/OS, IBM Technology for Java runs in i5/OS Portable Application Solutions Environment (i5/OS
PASE) with either a 32-bit (for the 32-bit VM) or 64-bit (for the 64-bit VM) environment. Due to
sophisticated memory management, both the 32-bit and 64-bit VMs provide a significant reduction in
memory requirements over the Classic VM for most applications. Because the 32-bit VM uses only 4
bytes (instead of 8 bytes) for object references, applications will have an even smaller memory footprint
with the 32-bit VM; however, the 32-bit address space leads to a maximum heap size of 2.5 - 3.25 GB,
which may not be enough memory for some applications.
Because IBM Technology for Java shares a common implementation with IBM’s VMs on other
platforms, the available tuning parameters are essentially the same on i5/OS as on other platforms. This
will require some adjustment for users of the i5/OS Classic VM, but may be a welcome change for those
who work with Java on multiple platforms.
Some of the key areas to be aware of when considering use of IBM Technology for Java are described
below.
Native Code
Because IBM Technology for Java runs in i5/OS PASE, there is some additional overhead in calls to
native ILE code. This may affect performance of certain applications which make calls to native ILE
code through the Java Native Interface (JNI). Calls to certain operating system services, such as IFS file
access and socket communication, may also have some additional overhead, although the overhead
should be minimal for applications with a typical use of these services. Conversely, JNI calls to PASE
native methods will have less overhead than they did with the Classic VM, offering a performance
improvement for some applications.
The performance impact for JNI method calls to ILE will depend on the frequency of JNI calls and the
complexity of the native methods. If the calls are infrequent, or if the native methods are very complex
(and therefore take a long time to execute), the increased overhead may not make a big difference in the
overall performance of the application. Applications which make frequent calls to simple native methods
may see a more significant performance impact compared to the 64-bit Classic VM.
For some applications, it may be possible to port these native methods to run in i5/OS PASE rather than
in ILE, greatly reducing the overhead of the native call. In other cases, it may be possible to modify the
application to require fewer JNI calls.
Garbage Collection
Recommendations for Garbage Collector (GC) tuning with the i5/OS Classic VM have always been a bit
different from tuning recommendations for Java VMs on other platforms. While the main GC tuning
parameters (initial and max heap size) have the same names as the key parameters for other VMs, and are
set in the same way when running Java from qsh (-Xms and -Xmx), the meaning of these parameters in
the Classic 64-bit VM is significantly different. However, with IBM Technology for Java these
parameters mean the same thing that they do in IBM VMs on other platforms. Many users will welcome
this commonality; however, it does make the transition to the new VM a bit more complicated. The move
from a 64-bit VM to a 32-bit VM also complicates matters somewhat, as the ideal heap size will be
significantly lower in a 32-bit VM than in a 64-bit VM.
IBM i 6.1 Performance Capabilities Reference - January/April/October 2008
©
Copyright IBM Corp. 2008
Chapter 7 - Java Performance
127