181 size_policy->major_collection_begin();
182
183 // When collecting the permanent generation methodOops may be moving,
184 // so we either have to flush all bcp data or convert it into bci.
185 CodeCache::gc_prologue();
186 Threads::gc_prologue();
187 BiasedLocking::preserve_marks();
188
189 // Capture heap size before collection for printing.
190 size_t prev_used = heap->used();
191
192 // Capture perm gen size before collection for sizing.
193 size_t perm_gen_prev_used = perm_gen->used_in_bytes();
194
195 // For PrintGCDetails
196 size_t old_gen_prev_used = old_gen->used_in_bytes();
197 size_t young_gen_prev_used = young_gen->used_in_bytes();
198
199 allocate_stacks();
200
201 NOT_PRODUCT(ref_processor()->verify_no_references_recorded());
202 COMPILER2_PRESENT(DerivedPointerTable::clear());
203
204 ref_processor()->enable_discovery();
205 ref_processor()->setup_policy(clear_all_softrefs);
206
207 mark_sweep_phase1(clear_all_softrefs);
208
209 mark_sweep_phase2();
210
211 // Don't add any more derived pointers during phase3
212 COMPILER2_PRESENT(assert(DerivedPointerTable::is_active(), "Sanity"));
213 COMPILER2_PRESENT(DerivedPointerTable::set_active(false));
214
215 mark_sweep_phase3();
216
217 mark_sweep_phase4();
218
219 restore_marks();
220
221 deallocate_stacks();
222
223 if (ZapUnusedHeapArea) {
224 // Do a complete mangle (top to end) because the usage for
|
181 size_policy->major_collection_begin();
182
183 // When collecting the permanent generation methodOops may be moving,
184 // so we either have to flush all bcp data or convert it into bci.
185 CodeCache::gc_prologue();
186 Threads::gc_prologue();
187 BiasedLocking::preserve_marks();
188
189 // Capture heap size before collection for printing.
190 size_t prev_used = heap->used();
191
192 // Capture perm gen size before collection for sizing.
193 size_t perm_gen_prev_used = perm_gen->used_in_bytes();
194
195 // For PrintGCDetails
196 size_t old_gen_prev_used = old_gen->used_in_bytes();
197 size_t young_gen_prev_used = young_gen->used_in_bytes();
198
199 allocate_stacks();
200
201 COMPILER2_PRESENT(DerivedPointerTable::clear());
202
203 ref_processor()->enable_discovery(true /*verify_disabled*/, true /*verify_no_refs*/);
204 ref_processor()->setup_policy(clear_all_softrefs);
205
206 mark_sweep_phase1(clear_all_softrefs);
207
208 mark_sweep_phase2();
209
210 // Don't add any more derived pointers during phase3
211 COMPILER2_PRESENT(assert(DerivedPointerTable::is_active(), "Sanity"));
212 COMPILER2_PRESENT(DerivedPointerTable::set_active(false));
213
214 mark_sweep_phase3();
215
216 mark_sweep_phase4();
217
218 restore_marks();
219
220 deallocate_stacks();
221
222 if (ZapUnusedHeapArea) {
223 // Do a complete mangle (top to end) because the usage for
|