diff --git a/src/heap.cc b/src/heap.cc index 06b5866447..fef0c510cc 100644 --- a/src/heap.cc +++ b/src/heap.cc @@ -465,9 +465,9 @@ void Heap::PerformGarbageCollection(AllocationSpace space, old_gen_allocation_limit_ = old_gen_size + Max(kMinimumAllocationLimit, old_gen_size / 2); old_gen_exhausted_ = false; - } else { - Scavenge(); } + Scavenge(); + Counters::objs_since_last_young.Set(0); PostGarbageCollectionProcessing(); @@ -521,12 +521,6 @@ void Heap::MarkCompact(GCTracer* tracer) { Counters::objs_since_last_full.Set(0); context_disposed_pending_ = false; - - Scavenge(); - - // Shrink new space as much as possible after compacting full - // garbage collections. - if (is_compacting) new_space_.Shrink(); } @@ -2807,6 +2801,8 @@ bool Heap::IdleNotification() { CollectAllGarbage(force_compaction); last_gc_count = gc_count_; if (force_compaction) { + // Shrink new space. + new_space_.Shrink(); number_idle_notifications = 0; finished = true; }