RFR: 8049831: Metadata Full GCs are not triggered when CMSClassUnloadingEnabled is turned off
erik.helin at oracle.com
Thu Jul 10 12:18:02 UTC 2014
On Thursday 10 July 2014 11:38:41 AM Stefan Karlsson wrote:
> Hi all,
> I decided to convert my adhoc test into a jtreg test that could be
> checked in:
Hotspot changes looks good, Reviewed!
As for the test, I think it would make sense to use jtreg's driver
feature in this test:
* @build TestCMSClassUnloadingDisabledHWM
* @run main ClassFileInstaller sun.hotspot.WhiteBox
* @run driver TestCMSClassUnloadingDisabledHWM
* @summary Test that -XX:-CMSClassUnloadingEnabled will trigger a Full GC when
more than MetaspaceSize metadata is allocated.
What do you think?
> On 2014-07-10 10:22, Stefan Karlsson wrote:
> > Hi all,
> > Please, review this fix to honor -XX:-CMSClassUnloadingEnabled
> > correctly in the metadata allocation failure path.
> > http://cr.openjdk.java.net/~stefank/8049831/webrev.00
> > https://bugs.openjdk.java.net/browse/JDK-8049831
> > By default, CMS does class unloading after a concurrent marking cycle.
> > When the amount of metadata hits the high water mark
> > (capacity_until_GC), a concurrent cycle is initiated, the high water
> > mark is increased and the thread can proceed with the allocation. If
> > CMSClassUnloadingEnabled is turned off we don't unload classes after a
> > concurrent cycle, but instead relies on Full GCs to reclaim metadata
> > memory. The current code skips triggering a concurrent cycle if
> > CMSClassUnloadingEnabled is turned off, but it still allows the high
> > water mark to be increased and the thread can proceed with the
> > allocation without triggering a Full GC first. This defeats the entire
> > purpose of the high water mark.
> > The suggested fix is to not allow the increase of the high water mark
> > and the allocation if CMSClassUnloadingEnabled is turned off.
> > thanks,
> > StefanK
More information about the hotspot-gc-dev