Recent Windows versions (>= 1809) have support for "shared" AWE sections. It that can be used to implement Large Pages support for ZGC.
Memory Reservation:
In comparison to the placeholder memory reservation, which is used for the small pages implementation, we don't have to split and keep track of "sub-reservations" with the shared AWE.
Memory Committing and Uncomitting:
The small pages implementation creates one paging file handle for each 2MB. With shared AWE, we only need one section that can grow and shrink dynamically.
Multi-mapping:
Memory in the shared AWE section can be mapped into multiple places virtual address space.
A first prototype can be found here:
https://cr.openjdk.java.net/~stefank/prototype/zWindowsLargePages/webrev.01/
Memory Reservation:
In comparison to the placeholder memory reservation, which is used for the small pages implementation, we don't have to split and keep track of "sub-reservations" with the shared AWE.
Memory Committing and Uncomitting:
The small pages implementation creates one paging file handle for each 2MB. With shared AWE, we only need one section that can grow and shrink dynamically.
Multi-mapping:
Memory in the shared AWE section can be mapped into multiple places virtual address space.
A first prototype can be found here:
https://cr.openjdk.java.net/~stefank/prototype/zWindowsLargePages/webrev.01/