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