142 friend class G1CheckCSetFastTableClosure;
143
144 private:
145 WorkGang* _workers;
146 G1CollectorPolicy* _collector_policy;
147
148 static size_t _humongous_object_threshold_in_words;
149
150 // The secondary free list which contains regions that have been
151 // freed up during the cleanup process. This will be appended to
152 // the master free list when appropriate.
153 FreeRegionList _secondary_free_list;
154
155 // It keeps track of the old regions.
156 HeapRegionSet _old_set;
157
158 // It keeps track of the humongous regions.
159 HeapRegionSet _humongous_set;
160
161 void eagerly_reclaim_humongous_regions();
162
163 // The number of regions we could create by expansion.
164 uint _expansion_regions;
165
166 // The block offset table for the G1 heap.
167 G1BlockOffsetTable* _bot;
168
169 // Tears down the region sets / lists so that they are empty and the
170 // regions on the heap do not belong to a region set / list. The
171 // only exception is the humongous set which we leave unaltered. If
172 // free_list_only is true, it will only tear down the master free
173 // list. It is called before a Full GC (free_list_only == false) or
174 // before heap shrinking (free_list_only == true).
175 void tear_down_region_sets(bool free_list_only);
176
177 // Rebuilds the region sets / lists so that they are repopulated to
178 // reflect the contents of the heap. The only exception is the
179 // humongous set which was not torn down in the first place. If
180 // free_list_only is true, it will only rebuild the master free
181 // list. It is called after a Full GC (free_list_only == false) or
|
142 friend class G1CheckCSetFastTableClosure;
143
144 private:
145 WorkGang* _workers;
146 G1CollectorPolicy* _collector_policy;
147
148 static size_t _humongous_object_threshold_in_words;
149
150 // The secondary free list which contains regions that have been
151 // freed up during the cleanup process. This will be appended to
152 // the master free list when appropriate.
153 FreeRegionList _secondary_free_list;
154
155 // It keeps track of the old regions.
156 HeapRegionSet _old_set;
157
158 // It keeps track of the humongous regions.
159 HeapRegionSet _humongous_set;
160
161 void eagerly_reclaim_humongous_regions();
162 // Start a new incremental collection set for the next pause.
163 void start_new_collection_set();
164
165 // The number of regions we could create by expansion.
166 uint _expansion_regions;
167
168 // The block offset table for the G1 heap.
169 G1BlockOffsetTable* _bot;
170
171 // Tears down the region sets / lists so that they are empty and the
172 // regions on the heap do not belong to a region set / list. The
173 // only exception is the humongous set which we leave unaltered. If
174 // free_list_only is true, it will only tear down the master free
175 // list. It is called before a Full GC (free_list_only == false) or
176 // before heap shrinking (free_list_only == true).
177 void tear_down_region_sets(bool free_list_only);
178
179 // Rebuilds the region sets / lists so that they are repopulated to
180 // reflect the contents of the heap. The only exception is the
181 // humongous set which was not torn down in the first place. If
182 // free_list_only is true, it will only rebuild the master free
183 // list. It is called after a Full GC (free_list_only == false) or
|