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