We see every now and then G1 decreasing the eden size to the minimum for a while without apparent reason and keeping it there for a few GCs before things get back to normal.
It looks as if the issue is an integer overflow (underflow?) during this calculation:
size_t rs_length_diff = _max_rs_lengths - _recorded_rs_lengths;
It looks as if _max_rs_lengths is smaller than _recorded_rs_lengths, rs_length_diff (being an unsigned value) gets _very_ large, and the prediction way overpredict.
Many thanks for Thomas Schatzl who, once again, tracked this down.