RFR: Revert "Print special cause for Metadata GC"

Aleksey Shipilev shade at redhat.com
Sun Nov 4 19:41:37 UTC 2018


Zhengyu got it right originally, we need to print "Trigger" in heuristics, otherwise we break the UX
invariant that every cycle has a Trigger. This is a clean revert of:
  http://hg.openjdk.java.net/shenandoah/jdk/rev/08b968d6f8af.

diff -r 9cf8cbfd3ba1 src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp       Sat Nov 03 23:59:21 2018 +0100
+++ b/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp       Sun Nov 04 20:36:33 2018 +0100
@@ -179,15 +179,10 @@

     bool gc_requested = (mode != none);
     assert (!gc_requested || cause != GCCause::_last_gc_cause, "GC cause should be set");

     if (gc_requested) {
-      if (heuristics->has_metaspace_oom()) {
-        // Some of vmTestbase/metaspace tests depend on following line to count GC cycles
-        log_info(gc)("Cause: %s", GCCause::to_string(GCCause::_metadata_GC_threshold));
-      }
-
       heap->reset_bytes_allocated_since_gc_start();

       // If GC was requested, we are sampling the counters even without actual triggers
       // from allocation machinery. This captures GC phases more accurately.
       set_forced_counters_update(true);
diff -r 9cf8cbfd3ba1 src/hotspot/share/gc/shenandoah/shenandoahHeuristics.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahHeuristics.cpp  Sat Nov 03 23:59:21 2018 +0100
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeuristics.cpp  Sun Nov 04 20:36:33 2018 +0100
@@ -228,11 +228,14 @@
 bool ShenandoahHeuristics::should_start_update_refs() {
   return _update_refs_early;
 }

 bool ShenandoahHeuristics::should_start_normal_gc() const {
+  // Perform GC to cleanup metaspace
   if (has_metaspace_oom()) {
+    // Some of vmTestbase/metaspace tests depend on following line to count GC cycles
+    log_info(gc)("Trigger: %s", GCCause::to_string(GCCause::_metadata_GC_threshold));
     return true;
   }

   double last_time_ms = (os::elapsedTime() - _last_cycle_end) * 1000;
   bool periodic_gc = (last_time_ms > ShenandoahGuaranteedGCInterval);


Testing: tier3_gc_shenandoah, vmTestbase/metaspace

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list