Skip to content

Commit 3b63bf1

Browse files
committed
Modified understanding how to override JVM max heap size section
1 parent 9b9008a commit 3b63bf1

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

modules/nodes-cluster-resource-configure-jdk.adoc

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,21 @@ this documentation, and may involve setting multiple additional JVM options.
2929
== Understanding how to override the JVM maximum heap size
3030

3131
For many Java workloads, the JVM heap is the largest single consumer of memory.
32-
Currently, the OpenJDK defaults to allowing up to 1/4 (1/`-XX:MaxRAMFraction`)
33-
of the compute node's memory to be used for the heap, regardless of whether the
34-
OpenJDK is running in a container or not. It is therefore *essential* to
32+
33+
Currently, on bare metal or VM setups, the OpenJDK's default heap value is 25%, 1/4th of the value (1/`-XX:MaxRamPercentage`). However, within containers using cgroups detection (v1 and v2 for JDK 11/17), the Xmx setting uses 50% of the maximum memory limits. In ubi9 - RHEL 9 images, the default allocation is 80%, leaving 20% for native use. It is therefore *essential* to
3534
override this behavior, especially if a container memory limit is also set.
3635

36+
The `UseContainerSupport` flag is on by default in the JVM. It helps the JVM recognize Docker container operations, automatically fetching container-specific details like CPU count and total memory. Therefore, it is not necessary to manually define `JAVA_MAX_INITIAL_MEM`, as the JVM obtains maximum memory allocation from the pods directly.
37+
3738
There are at least two ways the above can be achieved:
3839

39-
* If the container memory limit is set and the experimental options are
40-
supported by the JVM, set `-XX:+UnlockExperimentalVMOptions
41-
-XX:+UseCGroupMemoryLimitForHeap`.
40+
* If the container memory limit is set and the default options are
41+
supported by the JVM, set `-XX:
42+
-XX:+UseContainerSupport`.
4243
+
4344
[NOTE]
4445
====
45-
The `UseCGroupMemoryLimitForHeap` option has been removed in JDK 11. Use `-XX:+UseContainerSupport` instead.
46+
The `UseCGroupMemoryLimitForHeap` option has been removed in JDK 11. The `-XX:+UseContainerSupport` option is enabled by default.
4647
====
4748
+
4849
This sets `-XX:MaxRAM` to the container memory limit, and the maximum heap size

0 commit comments

Comments
 (0)