There are 3 spaces inside young-gen, eden, from, and to spaces. (The latter two are survivor spaces.)
Eden is placed before from/to. This placement makes is hard to expand eden when there is live objs inside from/to spaces. Therefore, one can encounter premature OOM, even when there are still large unused room at the end of young-gen.
One can move eden after from/to spaces so that eden can expand to the end of young-gen in order to satisfy an allocation request.
The same layout is also used in Parallel sinceJDK-8338977.
            
Eden is placed before from/to. This placement makes is hard to expand eden when there is live objs inside from/to spaces. Therefore, one can encounter premature OOM, even when there are still large unused room at the end of young-gen.
One can move eden after from/to spaces so that eden can expand to the end of young-gen in order to satisfy an allocation request.
The same layout is also used in Parallel since
- duplicates
- 
                    JDK-8368191 GC tests LinearListLow and CircularListLow fail due to OutOfMemoryError with SerialGC -           
- Closed
 
-         
- relates to
- 
                    JDK-8338977 Parallel: Improve heap resizing heuristics -           
- Resolved
 
-         
- 
                    JDK-8370198 Test gc/arguments/TestShrinkHeapInSteps.java crashed: assert(left >= right) failed: avoid underflow -           
- Open
 
-         
- links to
- 
                     Commit(master)
        openjdk/jdk/1392a0b4 Commit(master)
        openjdk/jdk/1392a0b4
- 
                     Review(master)
        openjdk/jdk/27513 Review(master)
        openjdk/jdk/27513