src/share/vm/gc_implementation/g1/g1CollectorPolicy.cpp

Print this page




1030       gclog_or_tty->print_cr("(End Time=%3.3f) Recent GC End Times (s):", end_time_sec);
1031       _recent_prev_end_times_for_all_gcs_sec->dump();
1032       gclog_or_tty->print_cr("GC = %3.3f, Interval = %3.3f, Ratio = %3.3f",
1033                              _recent_gc_times_ms->sum(), interval_ms, recent_avg_pause_time_ratio());
1034       // In debug mode, terminate the JVM if the user wants to debug at this point.
1035       assert(!G1FailOnFPError, "Debugging data for CR 6898948 has been dumped above");
1036 #endif  // !PRODUCT
1037       // Clip ratio between 0.0 and 1.0, and continue. This will be fixed in
1038       // CR 6902692 by redoing the manner in which the ratio is incrementally computed.
1039       if (_recent_avg_pause_time_ratio < 0.0) {
1040         _recent_avg_pause_time_ratio = 0.0;
1041       } else {
1042         assert(_recent_avg_pause_time_ratio - 1.0 > 0.0, "Ctl-point invariant");
1043         _recent_avg_pause_time_ratio = 1.0;
1044       }
1045     }
1046   }
1047 
1048   bool new_in_marking_window = _in_marking_window;
1049   bool new_in_marking_window_im = false;
1050   if (during_initial_mark_pause()) {
1051     new_in_marking_window = true;
1052     new_in_marking_window_im = true;
1053   }
1054 
1055   if (_last_young_gc) {
1056     // This is supposed to to be the "last young GC" before we start
1057     // doing mixed GCs. Here we decide whether to start mixed GCs or not.
1058 
1059     if (!last_pause_included_initial_mark) {
1060       if (next_gc_should_be_mixed("start mixed GCs",
1061                                   "do not start mixed GCs")) {
1062         set_gcs_are_young(false);
1063       }
1064     } else {
1065       ergo_verbose0(ErgoMixedGCs,
1066                     "do not start mixed GCs",
1067                     ergo_format_reason("concurrent cycle is about to start"));
1068     }
1069     _last_young_gc = false;
1070   }




1030       gclog_or_tty->print_cr("(End Time=%3.3f) Recent GC End Times (s):", end_time_sec);
1031       _recent_prev_end_times_for_all_gcs_sec->dump();
1032       gclog_or_tty->print_cr("GC = %3.3f, Interval = %3.3f, Ratio = %3.3f",
1033                              _recent_gc_times_ms->sum(), interval_ms, recent_avg_pause_time_ratio());
1034       // In debug mode, terminate the JVM if the user wants to debug at this point.
1035       assert(!G1FailOnFPError, "Debugging data for CR 6898948 has been dumped above");
1036 #endif  // !PRODUCT
1037       // Clip ratio between 0.0 and 1.0, and continue. This will be fixed in
1038       // CR 6902692 by redoing the manner in which the ratio is incrementally computed.
1039       if (_recent_avg_pause_time_ratio < 0.0) {
1040         _recent_avg_pause_time_ratio = 0.0;
1041       } else {
1042         assert(_recent_avg_pause_time_ratio - 1.0 > 0.0, "Ctl-point invariant");
1043         _recent_avg_pause_time_ratio = 1.0;
1044       }
1045     }
1046   }
1047 
1048   bool new_in_marking_window = _in_marking_window;
1049   bool new_in_marking_window_im = false;
1050   if (last_pause_included_initial_mark) {
1051     new_in_marking_window = true;
1052     new_in_marking_window_im = true;
1053   }
1054 
1055   if (_last_young_gc) {
1056     // This is supposed to to be the "last young GC" before we start
1057     // doing mixed GCs. Here we decide whether to start mixed GCs or not.
1058 
1059     if (!last_pause_included_initial_mark) {
1060       if (next_gc_should_be_mixed("start mixed GCs",
1061                                   "do not start mixed GCs")) {
1062         set_gcs_are_young(false);
1063       }
1064     } else {
1065       ergo_verbose0(ErgoMixedGCs,
1066                     "do not start mixed GCs",
1067                     ergo_format_reason("concurrent cycle is about to start"));
1068     }
1069     _last_young_gc = false;
1070   }