NonStop Server for Java 7.0 Programmer's Reference
Migrating from serial GC to parallel GC
NSJ7 supports Parallel and CMS garbage collectors. Parallel and CMS GC provide reduced
application pause time during GC when compared to Serial GC.
In NSJ7, when the parallel and CMS GC is enabled using command line option, one process is
launched for each GC thread. The Java and corresponding GC processes are called as process
group and they perform the following:
• Run on a same logical processor.
• Run simultaneously on different IPU(s) of the same processor.
• Provide a single process image to the Java application.
• Share the virtual address space.
• Communicate among themselves using Guardian IPC mechanism.
In Java process group, whenever a process terminates, the other processes in the group also
terminate. For more information, see “javagc” (page 59).
Application start-up time overhead
Application start-up time results higher while using Parallel and CMS GC since GC processes must
be launched and virtual memory must be shared by the GC processes.
With —XX:ParallelGCThreads=4, the overhead in startup time due to parallel GC was found
to be approximately 310 milliseconds. If your application cannot tolerate the overhead in startup
time due to the distributed GC, do not use the distributed GC options.
Swap space consideration
If parallel and CMS GC is enabled, then each GC thread has a corresponding GC process. The
GC process has the following virtual memory overhead:
• Main user stack (256 KB)
• Main RSE stack (256 KB)
• C heap (initial size, around 32 KB)
• One user thread stack (256 KB), for 32–bit NSJ7
• One user thread stack (512 KB), for 64–bit NSJ7
• One user RSE thread stack (256 KB), for 32–bit NSJ7
• One user RSE thread stack (512 KB), for 64–bit NSJ7
• Public DLLs instance data (around 1 MB)
In total, around 3 MB of additional swap space is required for one GC process. Considering that
there are four parallel GC processes, the total overhead is around 12 MB swap space per Java
process.
Resident space consideration
If parallel and CMS GC is enabled, then each GC thread has a corresponding GC process. The
GC process has the following resident memory overhead:
• PFS (256 KB)
• Privileged user stack (64 KB)
• Privileged user RSE stack (64 KB)
In total, around 384 KB of additional resident memory space is required for one GC process.
Considering that there are four parallel GC processes, the total overhead is around 1.5 MB resident
memories per Java process.
Migrating from serial GC to parallel GC 97










