Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8216001 | 13 | Sangheon Kim | P4 | Resolved | Fixed | b03 |
JDK-8216123 | 12.0.1 | Sangheon Kim | P4 | Resolved | Fixed | master |
Following text describes the design:
G1 divides the reserved heap space into regions; a region can end up as old, young or humongous. Thus old generation is not a range of memory address, its a collection of regions which are spread throughout the heap. An option is to map a region to the corresponding physical memory (dram or nv-dimm) based on how its being used. However this will involve page re-mapping which are proven to be costly due to tlb miss penalties.
To avoid this, we need non-overlapping reserved memories for old and young regions. We reserve 2*Xmx memory; Xmx memory for young regions and remaining Xmx memory for old regions. We create a sub-class of HeapRegionManager called 'HeapRegionManagerForHeteroHeap' which manages regions which are physically backed by DRAM and regions backed by NV-DIMM. HeapRegionManagerForHeteroHeap can be internally composed of HeapRegionManager for DRAM regions and HeapRegionManager for NV-DIMM regions (this conceptual composition does not need to be implemented as separate classes).
This class overrides the api used by G1CollectedHeap to allocate new region, expand heap, allocate humongous regions, etc. This class maintains the invariant that total number of committed regions is less than current size of heap. E.g. if G1 needs more DRAM regions than available at a given point, unused regions from NV-DIMM have to be uncommitted so that new regions in DRAM can be committed.
- backported by
-
JDK-8216001 Allocation of old generation of java heap on alternate memory devices - G1 GC
-
- Resolved
-
-
JDK-8216123 Allocation of old generation of java heap on alternate memory devices - G1 GC
-
- Resolved
-
- relates to
-
JDK-8215897 Build broken on zero after JDK-8211425
-
- Resolved
-
-
JDK-8215898 Build broken on 32-bit after JDK-8211425
-
- Resolved
-
-
JDK-8233822 VM_G1CollectForAllocation should always check for upgrade to full
-
- Resolved
-
-
JDK-8202286 Allocation of old generation of Java heap on alternate memory devices
-
- Resolved
-
-
JDK-8215893 Add better abstraction for pinning G1 concurrent marking bitmaps.
-
- Closed
-