Skip to content

Commit 3aee5ad

Browse files
author
Thomas Schatzl
committed
8264026: Remove dependency between free collection set and eagerly reclaim humongous object tasks
Reviewed-by: sjohanss, ayang
1 parent deda80f commit 3aee5ad

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

src/hotspot/share/gc/g1/g1CollectedHeap.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3979,6 +3979,8 @@ void G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo& evacuation_
39793979

39803980
eagerly_reclaim_humongous_regions();
39813981

3982+
rebuild_free_region_list();
3983+
39823984
record_obj_copy_mem_stats();
39833985

39843986
evacuation_info.set_collectionset_used_before(collection_set()->bytes_used_before());
@@ -4330,21 +4332,17 @@ void G1CollectedHeap::free_collection_set(G1CollectionSet* collection_set, G1Eva
43304332
Ticks free_cset_end_time = Ticks::now();
43314333
phase_times()->record_total_free_cset_time_ms((free_cset_end_time - free_cset_start_time).seconds() * 1000.0);
43324334

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-
43374335
collection_set->clear();
43384336
}
43394337

43404338
class G1FreeHumongousRegionClosure : public HeapRegionClosure {
4341-
private:
4339+
private:
43424340
FreeRegionList* _free_region_list;
43434341
HeapRegionSet* _proxy_set;
43444342
uint _humongous_objects_reclaimed;
43454343
uint _humongous_regions_reclaimed;
43464344
size_t _freed_bytes;
4347-
public:
4345+
public:
43484346

43494347
G1FreeHumongousRegionClosure(FreeRegionList* free_region_list) :
43504348
_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() {
44794477
}
44804478
}
44814479

4482-
prepend_to_freelist(&local_cleanup_list);
44834480
decrement_summary_bytes(cl.bytes_freed());
44844481

44854482
phase_times()->record_fast_reclaim_humongous_time_ms((os::elapsedTime() - start_time) * 1000.0,
44864483
cl.humongous_objects_reclaimed());
44874484
}
44884485

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+
44894492
class G1AbandonCollectionSetClosure : public HeapRegionClosure {
44904493
public:
44914494
virtual bool do_heap_region(HeapRegion* r) {

src/hotspot/share/gc/g1/g1CollectedHeap.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ class G1CollectedHeap : public CollectedHeap {
172172
HeapRegionSet _humongous_set;
173173

174174
void eagerly_reclaim_humongous_regions();
175+
176+
void rebuild_free_region_list();
175177
// Start a new incremental collection set for the next pause.
176178
void start_new_collection_set();
177179

0 commit comments

Comments
 (0)