Summary
-------
Add a new experimental flag -XX:AllocateOldGenAt to support allocation of old generation of Java heap on an alternate memory device.
Problem
-------
Please refer to problem and motivation in the <a href="https://bugs.openjdk.java.net/browse/JDK-8202286">parent entry</a>.
Solution
--------
The new flag provides a way for user to specify the backing memory to be used for allocating memory space for old generation objects. Young generation objects are always allocated in dram.
When a young generation object is tenured to old generation, typically, it is copied from one memory space in heap to another. When this flag is specified the destination is memory backed by the device on which the specified file resides.
How the heap memory space is managed depends on the GC algorithm and support is provided for G1 GC and ParallelOld GC.
<ol>
<li>This flag just changes where old generation of Java heap is allocated and does not affect behavior of Java application.</li>
<li>If the path specified does not exist or in case of other errors, the Java VM exits with relevant error message.</li>
<li>When this flag is not set, the behavior of Java VM is not affected.</li>
</ol>
Specification
-------------
experimental(ccstr, AllocateOldGenAt, NULL, "Path to the directoy where a temporary file will be created to use as the backing store for old generation")