If there is a risk for promotion failure then ParNew can decide to do an early exit. In ParNew::collect, the heap summary event is sent before this check, which means that there might be a heap summary without a corresponding garbage collection event.
I = low
L = medium
w = high
ILW => P5
The easy fix would be not to count the early exited GC. This would also be the correct fix. Unfortunately this is not a quick fix since the MX beans counts these as GCs (which is a bug in itself). A more correct solution would be something like having should_collect() detecting the promotion failed condition and say no to GC.