< prev index next >

src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.cpp

Print this page




4231     // concurrent precleaning.
4232     if (CMSParallelRemarkEnabled) {
4233       GCTraceTime(Debug, gc, phases) t("Rescan (parallel)", _gc_timer_cm);
4234       do_remark_parallel();
4235     } else {
4236       GCTraceTime(Debug, gc, phases) t("Rescan (non-parallel)", _gc_timer_cm);
4237       do_remark_non_parallel();
4238     }
4239   }
4240   verify_work_stacks_empty();
4241   verify_overflow_empty();
4242 
4243   {
4244     GCTraceTime(Trace, gc, phases) ts("refProcessingWork", _gc_timer_cm);
4245     refProcessingWork();
4246   }
4247   verify_work_stacks_empty();
4248   verify_overflow_empty();
4249 
4250   if (should_unload_classes()) {
4251     heap->prune_nmethods();
4252   }
4253   JvmtiExport::gc_epilogue();
4254 
4255   // If we encountered any (marking stack / work queue) overflow
4256   // events during the current CMS cycle, take appropriate
4257   // remedial measures, where possible, so as to try and avoid
4258   // recurrence of that condition.
4259   assert(_markStack.isEmpty(), "No grey objects");
4260   size_t ser_ovflw = _ser_pmc_remark_ovflw + _ser_pmc_preclean_ovflw +
4261                      _ser_kac_ovflw        + _ser_kac_preclean_ovflw;
4262   if (ser_ovflw > 0) {
4263     log_trace(gc)("Marking stack overflow (benign) (pmc_pc=" SIZE_FORMAT ", pmc_rm=" SIZE_FORMAT ", kac=" SIZE_FORMAT ", kac_preclean=" SIZE_FORMAT ")",
4264                          _ser_pmc_preclean_ovflw, _ser_pmc_remark_ovflw, _ser_kac_ovflw, _ser_kac_preclean_ovflw);
4265     _markStack.expand();
4266     _ser_pmc_remark_ovflw = 0;
4267     _ser_pmc_preclean_ovflw = 0;
4268     _ser_kac_preclean_ovflw = 0;
4269     _ser_kac_ovflw = 0;
4270   }
4271   if (_par_pmc_remark_ovflw > 0 || _par_kac_ovflw > 0) {




4231     // concurrent precleaning.
4232     if (CMSParallelRemarkEnabled) {
4233       GCTraceTime(Debug, gc, phases) t("Rescan (parallel)", _gc_timer_cm);
4234       do_remark_parallel();
4235     } else {
4236       GCTraceTime(Debug, gc, phases) t("Rescan (non-parallel)", _gc_timer_cm);
4237       do_remark_non_parallel();
4238     }
4239   }
4240   verify_work_stacks_empty();
4241   verify_overflow_empty();
4242 
4243   {
4244     GCTraceTime(Trace, gc, phases) ts("refProcessingWork", _gc_timer_cm);
4245     refProcessingWork();
4246   }
4247   verify_work_stacks_empty();
4248   verify_overflow_empty();
4249 
4250   if (should_unload_classes()) {
4251     heap->prune_scavengable_nmethods();
4252   }
4253   JvmtiExport::gc_epilogue();
4254 
4255   // If we encountered any (marking stack / work queue) overflow
4256   // events during the current CMS cycle, take appropriate
4257   // remedial measures, where possible, so as to try and avoid
4258   // recurrence of that condition.
4259   assert(_markStack.isEmpty(), "No grey objects");
4260   size_t ser_ovflw = _ser_pmc_remark_ovflw + _ser_pmc_preclean_ovflw +
4261                      _ser_kac_ovflw        + _ser_kac_preclean_ovflw;
4262   if (ser_ovflw > 0) {
4263     log_trace(gc)("Marking stack overflow (benign) (pmc_pc=" SIZE_FORMAT ", pmc_rm=" SIZE_FORMAT ", kac=" SIZE_FORMAT ", kac_preclean=" SIZE_FORMAT ")",
4264                          _ser_pmc_preclean_ovflw, _ser_pmc_remark_ovflw, _ser_kac_ovflw, _ser_kac_preclean_ovflw);
4265     _markStack.expand();
4266     _ser_pmc_remark_ovflw = 0;
4267     _ser_pmc_preclean_ovflw = 0;
4268     _ser_kac_preclean_ovflw = 0;
4269     _ser_kac_ovflw = 0;
4270   }
4271   if (_par_pmc_remark_ovflw > 0 || _par_kac_ovflw > 0) {


< prev index next >