What is the Metadata GC Threshold and how do I tune it?

The log message tells that GC was caused by Metaspace allocation failure.
Metaspaces hold class metadata. They have appeared in Java 8 to replace PermGen.

Here are some options to tune Metaspaces.
You may want to set one or several of the following options:

-XX:MetaspaceSize=100M Sets the size of the allocated class metadata space that will trigger a garbage collection the first time it is exceeded;

-XX:InitialBootClassLoaderMetaspaceSize=32M to increase the boot class loader Metaspace;

-XX:MinMetaspaceFreeRatio=50 to make Metaspaces grow more agressively;

-XX:MaxMetaspaceFreeRatio=80 to reduce the chance of Metaspaces shrinking;

-XX:MinMetaspaceExpansion=4M the minumum size by which a Metaspace is exanded;

-XX:MaxMetaspaceExpansion=16M the maximum size to expand a Metaspace by without Full GC.

Leave a Comment