@@ -3979,6 +3979,8 @@ void G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo& evacuation_
3979
3979
3980
3980
eagerly_reclaim_humongous_regions ();
3981
3981
3982
+ rebuild_free_region_list ();
3983
+
3982
3984
record_obj_copy_mem_stats ();
3983
3985
3984
3986
evacuation_info.set_collectionset_used_before (collection_set ()->bytes_used_before ());
@@ -4330,21 +4332,17 @@ void G1CollectedHeap::free_collection_set(G1CollectionSet* collection_set, G1Eva
4330
4332
Ticks free_cset_end_time = Ticks::now ();
4331
4333
phase_times ()->record_total_free_cset_time_ms ((free_cset_end_time - free_cset_start_time).seconds () * 1000.0 );
4332
4334
4333
- // Now rebuild the free region list.
4334
- _hrm.rebuild_free_list (workers ());
4335
- phase_times ()->record_total_rebuild_freelist_time_ms ((Ticks::now () - free_cset_end_time).seconds () * 1000.0 );
4336
-
4337
4335
collection_set->clear ();
4338
4336
}
4339
4337
4340
4338
class G1FreeHumongousRegionClosure : public HeapRegionClosure {
4341
- private:
4339
+ private:
4342
4340
FreeRegionList* _free_region_list;
4343
4341
HeapRegionSet* _proxy_set;
4344
4342
uint _humongous_objects_reclaimed;
4345
4343
uint _humongous_regions_reclaimed;
4346
4344
size_t _freed_bytes;
4347
- public:
4345
+ public:
4348
4346
4349
4347
G1FreeHumongousRegionClosure (FreeRegionList* free_region_list) :
4350
4348
_free_region_list (free_region_list), _proxy_set(NULL ), _humongous_objects_reclaimed(0 ), _humongous_regions_reclaimed(0 ), _freed_bytes(0 ) {
@@ -4479,13 +4477,18 @@ void G1CollectedHeap::eagerly_reclaim_humongous_regions() {
4479
4477
}
4480
4478
}
4481
4479
4482
- prepend_to_freelist (&local_cleanup_list);
4483
4480
decrement_summary_bytes (cl.bytes_freed ());
4484
4481
4485
4482
phase_times ()->record_fast_reclaim_humongous_time_ms ((os::elapsedTime () - start_time) * 1000.0 ,
4486
4483
cl.humongous_objects_reclaimed ());
4487
4484
}
4488
4485
4486
+ void G1CollectedHeap::rebuild_free_region_list () {
4487
+ Ticks start = Ticks::now ();
4488
+ _hrm.rebuild_free_list (workers ());
4489
+ phase_times ()->record_total_rebuild_freelist_time_ms ((Ticks::now () - start).seconds () * 1000.0 );
4490
+ }
4491
+
4489
4492
class G1AbandonCollectionSetClosure : public HeapRegionClosure {
4490
4493
public:
4491
4494
virtual bool do_heap_region (HeapRegion* r) {
0 commit comments