NonStop Server for Java 7.0 Programmer's Reference

HP’s GC log rotation option, XX:GCLogLimits, remains unchanged and supports both Xloggc
and Xverbosegc options.
NOTE: HP’s LogRotation option XX:GCLogLimits=M,N overrides Javasoft’s LogRotation
options. If HP's XX:GCLogLimits is specified, GC logs rotate to new log file after N records.
Other CMS/Parallel GC options
In earlier versions of NSJ, JVM does not throw an error message if some of the parallel and CMS
GC related options are used. JVM ignores these options since parallel and CMS collectors are not
available. However, with NSJ7, these options are accepted by JVM since the above-mentioned
collectors are available. For a complete list of the options, see Oracle Java documentation.
Memory management considerations
This section provides information about memory management considerations for both 32–bit and
64–bit JDK7.
JVM data segment for 32–bit JDK7
In 32–bit NSJ7, JDK/JRE allocates one or more flat segments (up to a maximum of six starting from
segment ID 1069 to 1074) for its internal dynamic memory requirement. These segments are
referred to as JVM data segments.
In earlier releases, during JVM initialization, the first JVM heap segment (1069) is allocated with
a segment size of 256 MB. When this segment is filled, the next available segment is allocated
with a size of 256 MB or less, depending on the virtual memory available during the time of
allocation. This process continues until all six segments or the virtual memory is filled. Since the
first segment size is 256 MB and there is no option to change the size, complete 256 MB is reserved
for JVM irrespective of whether the JVM uses the complete virtual memory (256 MB). This space
cannot be used for other purposes such as Java heap, native application heap, and so on. Therefore,
the maximum Java heap size available for an application is reduced by 256 MB from 1.3 GB on
NSJ6 and in NSJ7 it is reduced to 1084 MB.
NSJ7 SPR T2766H70^ACJ provides a feature to overcome the limitation of earlier NSJ7 JDK/JRE
as explained in the preceded section. This feature frees up 192 MB of virtual memory for the
process to use Java heap, native application heap, and so on compared to earlier version of NSJ7.
Additionally, a command line option, MaxJVMHeapSize, is provided to customize the JVM heap
size depending on the application requirement. The syntax for this option is as follows:
XX: MaxJVMHeapSize=<size>
where, size can vary from 64 MB to 1.5 GB.
Default value of MaxJVMHeapSize is 1.5 GB.
Using this command line option, application can customize the amount of virtual memory utilized
by JVM heap segments. Also from NSJ7 SPR T2766H70^ACJ, the first segment size is always 64
MB. The remaining segments sizes vary depending on the MaxJVMHeapSize. If the
MaxJVMHeapsize is 1.5 GB, which is the default value, the remaining five segments varies from
128 MB to 512 MB. It must be noted that in earlier release, the maximum size of the JVM heap
segment is always 256 MB. However, from NSJ7 SPR T2766H70^ACJ, the maximum size of the
JVM heap segment is not a fixed value and it depends upon the MaxJVMHeapSize.
JVM always rounds-off the value of the segment size to the next higher multiple of 4 MB. It must
be noted that JVM allocates the complete memory specified in MaxJVMHeapSize only on
availability of memory. Hence, MaxJVMHeapSize may not be honored always.
Sample Invocation:
java XX:MaxJVMHeapSize=256M -version
56 Implementation specifics