9.18.3 Notes
-
If you enable this function, the usage of the Java heap area and explicit heap area when the Java application is executed decreases, and the amount of change depends on the Java application. If you consider the change in the memory usage due to the enabling of this function to be a problem, disable this function.
-
Note that enabling this function might affect execution performance such as throughput when the Java application is executed. This function affects the execution performance in the following two points:
(a) The size of data (Java object) handled by JavaVM is reduced, which enables more efficient memory access (performance improvement factor).
(b) JavaVM requires calculations to compress the size of Java objects (performance degradation factor).
Due to the two factors (a) and (b), when this function is enabled, the performance when JavaVM is executed changes. Regarding (b), the calculation method also changes depending on the difference in the OS environment when JavaVM is started, which affects the execution performance. (For details, see (Supplement) below.) If you consider the change in performance due to the enabling of this function to be a problem, disable this function.
- (Supplement) Compression of Java object size
-
When the object-pointer compression function is enabled, JavaVM compresses and manages the size of Java objects. There are multiple compression methods (hereinafter called modes). When JavaVM is started, it selects a mode depending on the execution environment status. From then on, JavaVM applies the mode selected when it was started to compress the size of Java objects.
The following two conditions are used to select a mode:
1. Total of the values specified for the Java heap area size and the explicit heap area size
2. Where the heap areas of 1 are allocated in the virtual address space
Due to these conditions, depending on whether you change the values specified for the heap area sizes when JavaVM is started and depending on the loading status of other processes or libraries running on the same OS, a different mode is applied each time JavaVM is started.
Which mode is selected depends on where the heap areas are actually allocated in the virtual memory space. For this reason, it is difficult to enable this function so that a specific compression mode is always applied. Note that not only does a performance difference occur when this function is switched between enabled and disabled but a performance difference might also occur each time JavaVM is started when this function is enabled.
As a reference, the following table#1, #2 gives an overview of the selection conditions and compression methods for the modes that can be selected by JavaVM when the object-pointer compression function is enabled.
Table 9‒25: List of modes for the object-pointer compression function Selection conditions
Overview
Mode 1
When the total size of each heap area (Java heap area and explicit heap area#3) is less than 4 GB and both heap areas exist at a lower position than 4 GB in the virtual address space
The simplest calculation method is used to compress the size of Java objects.
Mode 2
When mode 1 cannot be applied and both heap areas exist at a lower position than 32 GB in the virtual address space.
The next simplest calculation method after mode 1 is used to compress the size of Java objects.
Mode 3
When mode 1 and mode 2 could not be applied
The most complicated method of these modes is used to compress the size of Java objects.
- #1
-
The content in the table shows the internal processing of JavaVM as a reference and is subject to change without prior notice due to subsequent JDK updates and modifications.
- #2
-
In AIX, mode 3 is always selected because enough memory to select mode 1 or mode 2 in Table 9-25 cannot be secured due to platform-specific restrictions.
- #3
-
For the explicit heap area, this condition applies only when the Explicit Memory Management functionality is used.