--- old/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2013-01-24 14:54:55.533514360 -0800 +++ new/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp 2013-01-24 14:54:55.265380367 -0800 @@ -4364,8 +4364,6 @@ _g1_rem(g1h->g1_rem_set()), _hash_seed(17), _queue_num(queue_num), _term_attempts(0), - _surviving_alloc_buffer(g1h->desired_plab_sz(GCAllocForSurvived)), - _tenured_alloc_buffer(g1h->desired_plab_sz(GCAllocForTenured)), _age_table(false), _strong_roots_time(0), _term_time(0), _alloc_buffer_waste(0), _undo_waste(0) { @@ -4385,8 +4383,11 @@ _surviving_young_words = _surviving_young_words_base + PADDING_ELEM_NUM; memset(_surviving_young_words, 0, (size_t) real_length * sizeof(size_t)); - _alloc_buffers[GCAllocForSurvived] = &_surviving_alloc_buffer; - _alloc_buffers[GCAllocForTenured] = &_tenured_alloc_buffer; + for (int ap = 0; ap < GCAllocPurposeCount; ++ap) + for (int pr = 0; pr < GCAllocPriorityCount; ++pr) { + _alloc_buffers[buf_idx(ap, pr)] = + new G1ParGCAllocBuffer(g1h->desired_plab_sz(GCAllocPurpose(ap))); + } _start = os::elapsedTime(); }