On Thu, 21 May 2026 19:57:23 GMT, Robert Toyonaga <[email protected]> wrote:

>> ### Summary
>> `os::committed_in_range` is used by NMT to account for thread stacks. The 
>> name is misleading, it actually is meant to find **live** pages not just 
>> **committed** pages.  On POSIX (except AIX) this works correctly using 
>> `mincore`. On Windows this worked incorrectly using `VirtualQuery` (only 
>> finds committed, not live regions). This means that the values reported on 
>> Windows were inaccurate.
>> 
>> This PR fixes the Windows implementation by using `QueryWorkingSetEx` 
>> instead of `VirtualQuery`. This properly identifies pages that are truly 
>> live in the working set, not just committed.  I also renamed 
>> `committed_in_range` to `resident_in_range` so that the intention is 
>> clearer. I have tried to structure the Windows implementation as similarly 
>> to Posix as possible to help with maintainability. 
>> 
>> ### Testing
>> - Tested on windows and linux and64
>> - `make test TEST=gtest:NMTCommittedVirtualMemory`  (this tests 
>> `live_in_range` directly)
>> - `make test 
>> TEST=test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java` (this 
>> tests `resident_in_range` indirectly through NMT thread stack accounting)
>> - `make test TEST=gtest:os`
>> - `make test TEST=hotspot_nmt`
>> - tier 1
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the 
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> Robert Toyonaga has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   comment succinctness

One of the Github gates is failing in the `GetJTReg` step "Downloading single 
artifact". Looks like CI flakiness and  doesn't seem related to the changes in 
this PR.

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

PR Comment: https://git.openjdk.org/jdk/pull/31124#issuecomment-4513434869

Reply via email to