-XX:[+|-]UseContainerSupport
(Linux® only)
If your application is running in a container that imposes a memory limit, the VM allocates a larger fraction of memory to the Java heap. To turn off this behavior, set the -XX:-UseContainerSupport option on the command line.
Syntax
-XX:[+|-]UseContainerSupport
| Setting | Effect | Default |
|---|---|---|
-XX:-UseContainerSupport |
Disable | |
-XX:+UseContainerSupport |
Enable | yes |
When using container technology, applications are typically run on their own and do not need to compete for memory. The Eclipse OpenJ9™ VM detects when it is running inside a container that imposes a memory limit, and adjusts the maximum Java heap size appropriately.
The following table shows the values that are used when -XX:+UseContainerSupport is set:
| Container memory limit <size> | Maximum Java heap size |
|---|---|
| Less than 1 GB | 50% <size> |
| 1 GB - 2 GB | <size> - 512 MB |
| Greater than 2 GB | 75% <size> |
The default heap size is capped at 25 GB, which is the limit of heap size for 3-bit shift of compressed references (see -Xcompressedrefs), to prevent silent switching to 4-bit shift of compressed references, which has possible performance penalties. You can use the -Xmx option or the -XX:MaxRAMPercentage option to overwrite the 25 GB limit.
The default heap size for containers takes effect only when the following conditions are met:
- The application is running in a container environment.
- The memory limit for the container is set.
- The
-XX:+UseContainerSupportoption is set, which is the default behavior. - The memory limit set for the container is less than physical memory.
If the container memory limit is greater than or equal to the physical memory, then the default values outlined for the
-Xmxoption are used as the default maximum heap. For more information, see Default settings for the Eclipse OpenJ9™ VM.
To prevent the VM adjusting the maximum heap size when running in a container, set -XX:-UseContainerSupport.
When -XX:MaxRAMPercentage / -XX:InitialRAMPercentage are used with -XX:+UseContainerSupport, the corresponding heap setting is determined based on the memory limit of the container. For example, to set the maximum heap size to 80% of the container memory, specify the following options:
-XX:+UseContainerSupport -XX:MaxRAMPercentage=80
Note: If you set a value for -Xms, the -XX:InitialRAMPercentage option is ignored.
If you set a value for -Xmx, the -XX:MaxRAMPercentage option is ignored.