(Linux® x86, Linux on POWER® (Little Endian), Linux on AArch64, and Linux on IBM Z® only)
This option specifies whether the JIT and AOT compilers generate nonportable compiled code on restore.
- This option takes effect only when
- When you disable this option,
CRIUSECProvideris the only security provider in both checkpoint and restore.
- JITServer technology is disabled both before you take a checkpoint and after you restore the VM.
- the VM generates only portable code, both before you take a checkpoint and after you restore the VM.
The JIT compiler can exploit hardware features of the system on which it is running, to generate compiled code. That code might therefore fail if it is included in a checkpoint image that you later restore on a different system. For example, the compiled code might try to exploit a hardware feature that doesn't exist on the new machine, then fail. To avoid this problem, the JIT compiler by default generates code that exploits only basic hardware features, therefore portable to different systems.
-XX:+CRIURestoreNonPortableMode option is set by default so that on restore the JIT compiler can start generating nonportable compiled code. Likewise, the VM can also load nonportable AOT code post-restore. Generating nonportable compiled code also means that no further checkpoints are permitted. Only a single checkpoint can be taken in the VM's lifetime.
If you require multiple checkpoints, you can use the
-XX:-CRIURestoreNonPortableMode option to generate portable JIT compiled code after restore.