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
-
Review(master)
openjdk/jdk/27513