RFR: Handle metadata induced GC

Zhengyu Gu zgu at redhat.com
Wed Oct 31 14:01:35 UTC 2018


> 
> Actually, not OK. After this change, SPECjbb dives into never-ending cycle of Full GC right away.
> 
Leftover explicit gc flag causes it to dive into full gc:

diff -r b6406cc37101 
src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp
--- a/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp	Tue 
Oct 30 17:17:00 2018 +0100
+++ b/src/hotspot/share/gc/shenandoah/shenandoahControlThread.cpp	Wed 
Oct 31 08:48:41 2018 -0400
@@ -85,7 +85,7 @@
      // Figure out if we have pending requests.
      bool alloc_failure_pending = _alloc_failure_gc.is_set();
      bool has_requested_gc = _gc_requested.is_set();
-    bool explicit_gc_requested = is_explicit_gc(_requested_gc_cause);
+    bool explicit_gc_requested = has_requested_gc && 
is_explicit_gc(_requested_gc_cause);

      // This control loop iteration have seen this much allocations.
      size_t allocs_seen = Atomic::xchg<size_t>(0, &_allocs_seen);

Test:
   tier3_gc_shenandoah (release and fastdebug)
   specjbb eyeballed composite.out

Thanks,

-Zhengyu



> -Aleksey
> 


More information about the shenandoah-dev mailing list