mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-16 16:39:48 +00:00
8264026: Remove dependency between free collection set and eagerly reclaim humongous object tasks
Reviewed-by: sjohanss, ayang
This commit is contained in:
parent
deda80f022
commit
3aee5ad2dd
@ -3979,6 +3979,8 @@ void G1CollectedHeap::post_evacuate_collection_set(G1EvacuationInfo& evacuation_
|
||||
|
||||
eagerly_reclaim_humongous_regions();
|
||||
|
||||
rebuild_free_region_list();
|
||||
|
||||
record_obj_copy_mem_stats();
|
||||
|
||||
evacuation_info.set_collectionset_used_before(collection_set()->bytes_used_before());
|
||||
@ -4330,21 +4332,17 @@ void G1CollectedHeap::free_collection_set(G1CollectionSet* collection_set, G1Eva
|
||||
Ticks free_cset_end_time = Ticks::now();
|
||||
phase_times()->record_total_free_cset_time_ms((free_cset_end_time - free_cset_start_time).seconds() * 1000.0);
|
||||
|
||||
// Now rebuild the free region list.
|
||||
_hrm.rebuild_free_list(workers());
|
||||
phase_times()->record_total_rebuild_freelist_time_ms((Ticks::now() - free_cset_end_time).seconds() * 1000.0);
|
||||
|
||||
collection_set->clear();
|
||||
}
|
||||
|
||||
class G1FreeHumongousRegionClosure : public HeapRegionClosure {
|
||||
private:
|
||||
private:
|
||||
FreeRegionList* _free_region_list;
|
||||
HeapRegionSet* _proxy_set;
|
||||
uint _humongous_objects_reclaimed;
|
||||
uint _humongous_regions_reclaimed;
|
||||
size_t _freed_bytes;
|
||||
public:
|
||||
public:
|
||||
|
||||
G1FreeHumongousRegionClosure(FreeRegionList* free_region_list) :
|
||||
_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() {
|
||||
}
|
||||
}
|
||||
|
||||
prepend_to_freelist(&local_cleanup_list);
|
||||
decrement_summary_bytes(cl.bytes_freed());
|
||||
|
||||
phase_times()->record_fast_reclaim_humongous_time_ms((os::elapsedTime() - start_time) * 1000.0,
|
||||
cl.humongous_objects_reclaimed());
|
||||
}
|
||||
|
||||
void G1CollectedHeap::rebuild_free_region_list() {
|
||||
Ticks start = Ticks::now();
|
||||
_hrm.rebuild_free_list(workers());
|
||||
phase_times()->record_total_rebuild_freelist_time_ms((Ticks::now() - start).seconds() * 1000.0);
|
||||
}
|
||||
|
||||
class G1AbandonCollectionSetClosure : public HeapRegionClosure {
|
||||
public:
|
||||
virtual bool do_heap_region(HeapRegion* r) {
|
||||
|
||||
@ -172,6 +172,8 @@ private:
|
||||
HeapRegionSet _humongous_set;
|
||||
|
||||
void eagerly_reclaim_humongous_regions();
|
||||
|
||||
void rebuild_free_region_list();
|
||||
// Start a new incremental collection set for the next pause.
|
||||
void start_new_collection_set();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user