--- old/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2014-04-11 12:18:34.843718527 +0200 +++ new/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2014-04-11 12:18:34.767718530 +0200 @@ -4557,7 +4557,7 @@ } G1ParGCAllocBuffer::G1ParGCAllocBuffer(size_t gclab_word_size) : - ParGCAllocBuffer(gclab_word_size), _retired(false) { } + ParGCAllocBuffer(gclab_word_size), _retired(true) { } G1ParScanThreadState::G1ParScanThreadState(G1CollectedHeap* g1h, uint queue_num, ReferenceProcessor* rp) : _g1h(g1h), @@ -4921,8 +4921,6 @@ pss->trim_queue(); } } while (!offer_termination()); - - pss->retire_alloc_buffers(); } class G1KlassScanClosure : public KlassClosure { @@ -5748,10 +5746,8 @@ } _gc_tracer_stw->report_gc_reference_stats(stats); - // We have completed copying any necessary live referent objects - // (that were not copied during the actual pause) so we can - // retire any active alloc buffers - pss.retire_alloc_buffers(); + + // We have completed copying any necessary live referent objects. assert(pss.refs()->is_empty(), "both queue and overflow should be empty"); double ref_proc_time = os::elapsedTime() - ref_proc_start;