RFR: 8364518: Support for Job Objects in os::commit_memory_limit() on Windows
Joel Sikström
jsikstro at openjdk.org
Fri Aug 1 10:44:40 UTC 2025
Hello,
We currently use os::commit_memory_limit() to limit the initial, min and max values when ergonomically setting the heap size. Right now, os::commit_memory_limit() returns the available virtual address space on Windows, which is guaranteed to be the upper-bound of how much memory can be committed. However, this does not take into account user-configurable limits.
I propose revising os::commit_memory_limit() to consider Windows Job Objects. Job Objects can, among other things, restrict the amount of memory that can be committed by a single process or all processes in a job. If we are unable to query Job Object information or if no limit is set, I suggest returning SIZE_MAX, since the next effective limit is the available virtual address space. The size of this virtual address space cannot be modified by the user, except by consuming it.
For more details and short examples, I have created a GitHub repository summarizing my findings regarding memory limits and Job Objects on Windows: [https://github.com/jsikstro/MemoryLimitsWindows ](https://github.com/jsikstro/MemoryLimitsWindows).
Adding support for Job Objects in this way adds support for detecting memory limits when using native Windows Hyper-V containers, which uses Job Objects to limit memory.
Testing:
* Oracles tier1-2
* Manual testing on Windows using both [Process Governor](https://github.com/lowleveldesign/process-governor) (a popular tool), and creating a Job Object manually.
-------------
Commit messages:
- 8364518: Support for Job Objects in os::commit_memory_limit() on Windows
Changes: https://git.openjdk.org/jdk/pull/26593/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=26593&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8364518
Stats: 18 lines in 1 file changed: 14 ins; 0 del; 4 mod
Patch: https://git.openjdk.org/jdk/pull/26593.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/26593/head:pull/26593
PR: https://git.openjdk.org/jdk/pull/26593
More information about the hotspot-runtime-dev
mailing list