During a full gc, all live objects in the young gen are copied to the old gen as long as there is enough space. When the heap is very full, all the young gen objects may not fit. With par compaction, this often results in a long series of time-consuming full gcs which do not free up space in eden. When par compact is copying from a young gen space (e.g., eden or from) to the old gen, *all* live objects in the space must fit into the old gen; otherwise, none of them will be copied. This is because par compaction operates on fixed-size 'regions' of the heap and copying only part of a space would require extra bookkeeping (or some good luck).
The extra bookkeeping should be implemented to allow a young gen space to be "split" so that as much as will fit is copied to the old gen and the rest is compacted down within the young gen space itself.