Parallel GC now uses the same Full GC algorithm found in Serial GC and G1 GC Full GCs.
The previous algorithm consisted of three passes through every live object in the Java heap:
1. Marking live objects
2. Calculating new locations for every live object
3. Moving objects to new locations and update fields of every object
The object locations calculated in step 2 are stored using off-heap memory to avoid a fourth pass through the live objects in the Java heap. The problem is that this scheme does not scale well for certain problematic workloads. Additionally this data structure uses 1.5% of the Java heap in off-heap memory.
The new algorithm performs significantly better for the problematic workloads, and does not need the additional memory, reducing the footprint for all workloads.