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

David Holmes dholmes at openjdk.org
Tue Aug 5 06:48:06 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:
>> * Oracle's 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

src/hotspot/os/windows/os_windows.cpp line 3321:

> 3319: 
> 3320:   // No limit
> 3321:   return SIZE_MAX;

Shouldn't we fallback to using ` GlobalMemoryStatusEx` if we are not part of a Job?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26593#discussion_r2253314501


More information about the hotspot-gc-dev mailing list