--- old/src/share/vm/gc/g1/vm_operations_g1.cpp 2015-10-01 18:03:46.596883238 +0200 +++ new/src/share/vm/gc/g1/vm_operations_g1.cpp 2015-10-01 18:03:46.500884445 +0200 @@ -144,7 +144,7 @@ return; } } - + size_t used_before = g1h->used(); _pause_succeeded = g1h->do_collection_pause_at_safepoint(_target_pause_time_ms); if (_pause_succeeded && _word_size > 0) { @@ -160,6 +160,10 @@ // since the prologue was executed). In this case we should retry // the pause after waiting for the GC locker to become inactive. _should_retry_gc = true; + } else { + if (g1h->evacuation_failed() && (used_before - g1h->used() > 0) ) { + g1h->do_full_collection(true /* clear_all_soft_refs */); + } } } }