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 Hi, I think that calling this "resident" makes sense. So, this only changes the behavior of Windows to be closer to Linux? Well, seems like it from your description and the code. I'm happy to integrate this. I don't know what's bug prone about the NMT usage, but maybe it is :-). Nonetheless, this is pre-existing behavior, so to me this isn't going to matter for getting this PR in. ------------- Marked as reviewed by jsjolen (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/31124#pullrequestreview-4418885362
