61 G1RemSetSummary _prev_period_summary;
62
63 G1CollectedHeap* _g1h;
64
65 G1CardTable* _ct;
66 G1Policy* _g1p;
67 G1HotCardCache* _hot_card_cache;
68
69 void print_merge_heap_roots_stats();
70 public:
71
72 typedef CardTable::CardValue CardValue;
73 // Gives an approximation on how many threads can be expected to add records to
74 // a remembered set in parallel. This can be used for sizing data structures to
75 // decrease performance losses due to data structure sharing.
76 // Examples for quantities that influence this value are the maximum number of
77 // mutator threads, maximum number of concurrent refinement or GC threads.
78 static uint num_par_rem_sets();
79
80 // Initialize data that depends on the heap size being known.
81 void initialize(size_t capacity, uint max_regions);
82
83 G1RemSet(G1CollectedHeap* g1h,
84 G1CardTable* ct,
85 G1HotCardCache* hot_card_cache);
86 ~G1RemSet();
87
88 // Scan all cards in the non-collection set regions that potentially contain
89 // references into the current whole collection set.
90 void scan_heap_roots(G1ParScanThreadState* pss,
91 uint worker_id,
92 G1GCPhaseTimes::GCParPhases scan_phase,
93 G1GCPhaseTimes::GCParPhases objcopy_phase);
94
95 // Merge cards from various sources (remembered sets, hot card cache, log buffers)
96 // and calculate the cards that need to be scanned later (via scan_heap_roots()).
97 // If initial_evacuation is set, this is called during the initial evacuation.
98 void merge_heap_roots(bool initial_evacuation);
99
100 // Prepare for and cleanup after scanning the heap roots. Must be called
101 // once before and after in sequential code.
|
61 G1RemSetSummary _prev_period_summary;
62
63 G1CollectedHeap* _g1h;
64
65 G1CardTable* _ct;
66 G1Policy* _g1p;
67 G1HotCardCache* _hot_card_cache;
68
69 void print_merge_heap_roots_stats();
70 public:
71
72 typedef CardTable::CardValue CardValue;
73 // Gives an approximation on how many threads can be expected to add records to
74 // a remembered set in parallel. This can be used for sizing data structures to
75 // decrease performance losses due to data structure sharing.
76 // Examples for quantities that influence this value are the maximum number of
77 // mutator threads, maximum number of concurrent refinement or GC threads.
78 static uint num_par_rem_sets();
79
80 // Initialize data that depends on the heap size being known.
81 void initialize(uint max_regions);
82
83 G1RemSet(G1CollectedHeap* g1h,
84 G1CardTable* ct,
85 G1HotCardCache* hot_card_cache);
86 ~G1RemSet();
87
88 // Scan all cards in the non-collection set regions that potentially contain
89 // references into the current whole collection set.
90 void scan_heap_roots(G1ParScanThreadState* pss,
91 uint worker_id,
92 G1GCPhaseTimes::GCParPhases scan_phase,
93 G1GCPhaseTimes::GCParPhases objcopy_phase);
94
95 // Merge cards from various sources (remembered sets, hot card cache, log buffers)
96 // and calculate the cards that need to be scanned later (via scan_heap_roots()).
97 // If initial_evacuation is set, this is called during the initial evacuation.
98 void merge_heap_roots(bool initial_evacuation);
99
100 // Prepare for and cleanup after scanning the heap roots. Must be called
101 // once before and after in sequential code.
|