RFR: 8364518: Support for Job Objects in os::commit_memory_limit() on Windows [v2]

Joel Sikström jsikstro at openjdk.org
Mon Aug 4 07:40:12 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.

Joel Sikström has updated the pull request incrementally with one additional commit since the last revision:

  Print error message if query fails

-------------

Changes:
  - all: https://git.openjdk.org/jdk/pull/26593/files
  - new: https://git.openjdk.org/jdk/pull/26593/files/436e2160..eb446664

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jdk&pr=26593&range=01
 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=26593&range=00-01

  Stats: 6 lines in 1 file changed: 5 ins; 1 del; 0 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-gc-dev mailing list