During the Remark pause we use the full gc heap resizing policy.
One important metric is the amount of free space/regions at that point; it is calculated as
const size_t used_after_gc = capacity_after_gc - _g1h->unused_committed_regions_in_bytes();
The problem with that formula is that at the point when the Remark pause occurs, Eden is not empty compared to full gc.
So the result of this calculation is very dependent on the point in time the Remark pause occurs, and so is the result whether g1 expands the heap or not. The suggestion is to incorporate current eden size as well.
Introduced in JDK-6490394.
This can cause lots of unnecessary heap expansions and heap usage.