--- old/src/share/vm/gc/serial/genMarkSweep.cpp 2016-09-20 14:39:28.507200659 +0200 +++ new/src/share/vm/gc/serial/genMarkSweep.cpp 2016-09-20 14:39:28.375195505 +0200 @@ -196,12 +196,13 @@ { StrongRootsScope srs(1); - gch->old_process_roots(&srs, - false, // Younger gens are not roots. - GenCollectedHeap::SO_None, - ClassUnloading, - &follow_root_closure, - &follow_cld_closure); + gch->full_process_roots(&srs, + ClassUnloading, // only strong roots if ClassUnloading + // is enabled + GenCollectedHeap::SO_None, + false, // not the adjust phase + &follow_root_closure, + &follow_cld_closure); } // Process reference objects found during marking @@ -293,10 +294,10 @@ { StrongRootsScope srs(1); - gch->old_process_roots(&srs, - false, // Younger gens are not roots. + gch->full_process_roots(&srs, + false, // all roots GenCollectedHeap::SO_AllCodeCache, - false, + true, // this is the adjust phase &adjust_pointer_closure, &adjust_cld_closure); }