PermGen removed, Metaspace arrives

Java 8 Course · lesson 10 of 16 · 3 min read

The JVM change in Java 8 that silently deleted a whole category of production outage.

Open this lesson in the learning hub

Key points

  • Class metadata used to live in PermGen, a fixed-size region set by -XX:MaxPermSize.
  • Redeploy an app server enough times and old class loaders filled it: OutOfMemoryError: PermGen space.
  • Java 8 moved metadata to Metaspace, allocated from native memory and growing by default.
  • The classic error disappeared - but an unbounded leak now eats native memory instead, so leaks still matter.
  • -XX:MaxPermSize is ignored on 8+; the JVM warns and moves on.

Java 8 deleted the PermGen error, but a class-loader leak still costs you native memory.

This is a reading copy. The full lesson — with the visual explainer, the interactive lab and a Run button for the code — lives in the Java 8 Course course, and every lesson in it is listed on the Java 8 Course contents page.