--- a/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Fri Jun 14 16:47:58 2019 +0200
+++ b/src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp Fri Jun 14 11:58:23 2019 -0400
@@ -1279,7 +1279,12 @@
// First, we process all GC roots. This populates the work stack with initial objects.
ShenandoahAllRootScanner rp(1, ShenandoahPhaseTimings::_num_phases);
ObjectIterateScanRootClosure oops(&_aux_bit_map, &oop_stack);
- rp.roots_do_unchecked(&oops);
+
+ if (unload_classes()) {
+ rp.strong_roots_do_unchecked(&oops);
+ } else {
+ rp.roots_do_unchecked(&oops);
+ }
// Work through the oop stack to traverse heap.
while (! oop_stack.is_empty()) {