RFR: 8364518: Support for Job Objects in os::commit_memory_limit() on Windows [v2]
Albert Mingkun Yang
ayang at openjdk.org
Mon Aug 4 07:52:59 UTC 2025
On Mon, 4 Aug 2025 07:40:12 GMT, Joel Sikström <jsikstro at openjdk.org> wrote:
>> 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
Marked as reviewed by ayang (Reviewer).
-------------
PR Review: https://git.openjdk.org/jdk/pull/26593#pullrequestreview-3083085532
More information about the hotspot-gc-dev
mailing list