-XX:[+|-]EnableCRIUSupport

(Linux® x86, Linux on POWER® (Little Endian), Linux on AArch64, and Linux on IBM Z® only)

This option enables or disables support for Checkpoint/Restore In Userspace (CRIU).

Restrictions: If CRIU support is enabled,

Nonportable mode (default)
Pre-checkpoint
Nonportable mode (default)
Post restore
Portable mode Pre-checkpoint Portable mode Post restore
Pre-checkpoint: No options
Post restore: No options
no no no no
Pre-checkpoint: No options
Post restore: -XX:+UseJITServer
no yes no yes
Pre-checkpoint: -XX:+UseJITServer
Post restore: No options
no yes yes yes
Pre-checkpoint: -XX:+UseJITServer
Post restore: -XX:-UseJITServer
no no yes no
Pre-checkpoint: -XX:-UseJITServer
Post restore: -XX:+UseJITServer
no no no no

Syntax

    -XX:[+|-]EnableCRIUSupport
Setting Effect Default
-XX:+EnableCRIUSupport Enable
-XX:-EnableCRIUSupport Disable yes

Explanation

When you enable the option, the VM starts with the support for checkpoint and restore processes. The VM starts the JIT, GC, Security, and other internal components that make the checkpoint and restore points feasible. The option enables the use of org.eclipse.openj9.criu.CRIUSupport APIs. With CRIU support, you can take a checkpoint of the VM and restore the checkpoint image. When you specify the -XX:+EnableCRIUSupport option, the VM generates only those compiled codes that are portable (see -XX:[+|-]PortableSharedCache) to facilitate restoring of the checkpoint image in multiple environments. VM does not load any code from the shared classes cache that is nonportable pre-checkpoint.

Taking a checkpoint and restoring the checkpoint image generally happens on different environments with different behaviors. OpenJ9 makes compensations for such differences to ensure successful restore. For example, the VM compensates for the downtime between checkpoint and restore for elapsed time sensitive APIs such as System.nanotime() and java.util.Timer.

For more information about the OpenJ9 compensations and Time APIs, see the Compensation section in the OpenJ9 CRIU Support: A look under the hood (part II) blog post.

This option was introduced in Version 0.38 of OpenJ9. For more information, see CRIU support and version 0.38.0