# HG changeset patch # User stefank # Date 1405062443 -7200 # Node ID bac98749fe00840ac72118d83bde5652faf86cdc # Parent 870c03421152c0282b64aacc3ba09c2a28e1f300 8049831: Metadata Full GCs are not triggered when CMSClassUnloadingEnabled is turned off Reviewed-by: brutisso, tschatzl, ehelin, jmasa, dfazunen diff -r 870c03421152 -r bac98749fe00 src/share/vm/gc_implementation/shared/vmGCOperations.cpp --- a/src/share/vm/gc_implementation/shared/vmGCOperations.cpp Wed Jul 09 16:44:30 2014 +0200 +++ b/src/share/vm/gc_implementation/shared/vmGCOperations.cpp Fri Jul 11 09:07:23 2014 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -211,28 +211,29 @@ bool VM_CollectForMetadataAllocation::initiate_concurrent_GC() { #if INCLUDE_ALL_GCS - if (UseConcMarkSweepGC || UseG1GC) { - if (UseConcMarkSweepGC && CMSClassUnloadingEnabled) { - MetaspaceGC::set_should_concurrent_collect(true); - } else if (UseG1GC) { - G1CollectedHeap* g1h = G1CollectedHeap::heap(); - g1h->g1_policy()->set_initiate_conc_mark_if_possible(); + if (UseConcMarkSweepGC && CMSClassUnloadingEnabled) { + MetaspaceGC::set_should_concurrent_collect(true); + return true; + } - GCCauseSetter x(g1h, _gc_cause); + if (UseG1GC) { + G1CollectedHeap* g1h = G1CollectedHeap::heap(); + g1h->g1_policy()->set_initiate_conc_mark_if_possible(); - // At this point we are supposed to start a concurrent cycle. We - // will do so if one is not already in progress. - bool should_start = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause); + GCCauseSetter x(g1h, _gc_cause); - if (should_start) { - double pause_target = g1h->g1_policy()->max_pause_time_ms(); - g1h->do_collection_pause_at_safepoint(pause_target); - } + // At this point we are supposed to start a concurrent cycle. We + // will do so if one is not already in progress. + bool should_start = g1h->g1_policy()->force_initial_mark_if_outside_cycle(_gc_cause); + + if (should_start) { + double pause_target = g1h->g1_policy()->max_pause_time_ms(); + g1h->do_collection_pause_at_safepoint(pause_target); } - return true; } #endif + return false; } diff -r 870c03421152 -r bac98749fe00 test/TEST.groups --- a/test/TEST.groups Wed Jul 09 16:44:30 2014 +0200 +++ b/test/TEST.groups Fri Jul 11 09:07:23 2014 +0200 @@ -169,6 +169,7 @@ # needs_full_vm_compact1 = \ runtime/NMT \ + gc/class_unloading/TestCMSClassUnloadingDisabledHWM.java \ gc/g1/TestRegionAlignment.java \ gc/g1/TestShrinkToOneRegion.java \ gc/metaspace/G1AddMetaspaceDependency.java \