SlideShare a Scribd company logo
4/21/2016 Java 8: From PermGen to Metaspace
https://www.javacodegeeks.com/2013/02/java­8­from­permgen­to­metaspace.html 1/6
Java 8: From PermGen to Metaspace
As you may be aware, the JDK 8 Early Access is now available for download. This allows Java
developers to experiment with some of the new language and runtime features of Java 8. One of
these features is the complete removal of the Permanent Generation (PermGen) space which has
been announced by Oracle since the release of JDK 7. Interned strings, for example, have already
been removed from the PermGen space since JDK 7. The JDK 8 release finalizes its
decommissioning. This article will share the information that we found so far on the PermGen
successor: Metaspace. We will also compare the runtime behavior of the HotSpot 1.7 vs. HotSpot
1.8 (b75) when executing a Java program “leaking” class metadata objects. The final specifications,
tuning flags and documentation around Metaspace should be available once Java 8 is officially
released.
Metaspace:
A new memory space is born
The JDK 8 HotSpot JVM is now using native memory for the representation of class metadata and is
called Metaspace;  similar to the Oracle JRockit and IBM JVM’s. The good news is that it means no
more java.lang.OutOfMemoryError: PermGen space problems and no need for you to tune and
monitor this memory space anymore…not so fast. While this change is invisible by default, we will
show you next that you will still need to worry about the class metadata memory footprint. Please also
keep in mind that this new feature does not magically eliminate class and classloader memory leaks.
You will need to track down these problems using a different approach and by learning the new
naming convention. I recommend that you read the PermGen removal summary and comments from
Jon on this subject.
In summary:
PermGen space situation
This memory space is completely removed.
The PermSize and MaxPermSize JVM arguments are ignored and a warning is issued if present
at start­up.
Metaspace memory allocation model
Most allocations for the class metadata are now allocated out of native memory.
The klasses that were used to describe class metadata have been removed.
Metaspace capacity
4/21/2016 Java 8: From PermGen to Metaspace
https://www.javacodegeeks.com/2013/02/java­8­from­permgen­to­metaspace.html 2/6
By default class metadata allocation is limited by the amount of available native memory (capacity
will of course depend if you use a 32­bit JVM vs. 64­bit along with OS virtual memory availability).
A new flag is available (MaxMetaspaceSize), allowing you to limit the amount of native memory
used for class metadata. If you don’t specify this flag, the Metaspace will dynamically re­size
depending of the application demand at runtime.
Metaspace garbage collection
Garbage collection of the dead classes and classloaders is triggered once the class metadata
usage reaches the “MaxMetaspaceSize”.
Proper monitoring & tuning of the Metaspace will obviously be required in order to limit the
frequency or delay of such garbage collections. Excessive Metaspace garbage collections may be
a symptom of classes, classloaders memory leak or inadequate sizing for your application.
Java heap space impact
Some miscellaneous data has been moved to the Java heap space. This means you may observe
an increase of the Java heap space following a future JDK 8 upgrade.
Metaspace monitoring
Metaspace usage is available from the HotSpot 1.8 verbose GC log output.
Jstat & JVisualVM have not been updated at this point based on our testing with b75 and the old
PermGen space references are still present.
Enough theory now, let’s see this new memory space in action via our leaking Java program…
PermGen vs. Metaspace runtime comparison
In order to better understand the runtime behavior of the new Metaspace memory space, we created
a class metadata leaking Java program. You can download the source here.
The following scenarios will be tested:
Run the Java program using JDK 1.7 in order to monitor & deplete the PermGen memory space
set at 128 MB.
Run the Java program using JDK 1.8 (b75) in order to monitor the dynamic increase and garbage
collection of the new Metaspace memory space.
Run the Java program using JDK 1.8 (b75) in order to simulate the depletion of the Metaspace by
setting the MaxMetaspaceSize value at 128 MB.
JDK 1.7 @64­bit – PermGen depletion
4/21/2016 Java 8: From PermGen to Metaspace
https://www.javacodegeeks.com/2013/02/java­8­from­permgen­to­metaspace.html 3/6
Java program with 50K configured iterations
Java heap space of 1024 MB
Java PermGen space of 128 MB (­XX:MaxPermSize=128m)
As you can see form JVisualVM, the PermGen depletion was reached after loading about 30K+
classes. We can also see this depletion from the program and GC output.
1Class metadata leak simulator
Now let’s execute the program using the HotSpot JDK 1.8 JRE.
JDK 1.8 @64­bit – Metaspace dynamic re­size
Java program with 50K configured iterations
Java heap space of 1024 MB
Java Metaspace space: unbounded (default)
4/21/2016 Java 8: From PermGen to Metaspace
https://www.javacodegeeks.com/2013/02/java­8­from­permgen­to­metaspace.html 4/6
As you can see from the verbose GC output, the JVM Metaspace did expand dynamically from 20
MB up to 328 MB of reserved native memory in order to honor the increased class metadata memory
footprint from our Java program. We could also observe garbage collection events in the attempt by
the JVM to destroy any dead class or classloader object. Since our Java program is leaking, the JVM
had no choice but to dynamically expand the Metaspace memory space. The program was able to
run its 50K of iterations with no OOM event and loaded 50K+ Classes. Let’s move to our last testing
scenario.
JDK 1.8 @64­bit – Metaspace depletion
Java program with 50K configured iterations
Java heap space of 1024 MB
Java Metaspace space: 128 MB (­XX:MaxMetaspaceSize=128m)
4/21/2016 Java 8: From PermGen to Metaspace
https://www.javacodegeeks.com/2013/02/java­8­from­permgen­to­metaspace.html 5/6
As you can see form JVisualVM, the Metaspace depletion was reached after loading about 30K+
classes; very similar to the run with the JDK 1.7. We can also see this from the program and GC
output. Another interesting observation is that the native memory footprint reserved was twice as
much as the maximum size specified. This may indicate some opportunities to fine tune the
Metaspace re­size policy, if possible, in order to avoid native memory waste.
Now find below the Exception we got from the Java program output.
1Class metadata leak simulator
Done!
As expected, capping the Metaspace at 128 MB like we did for the baseline run with JDK 1.7 did not
allow us to complete the 50K iterations of our program. A new OOM error was thrown by the JVM.
The above OOM event was thrown by the JVM from the Metaspace following a memory allocation
failure.
#metaspace.cpp
4/21/2016 Java 8: From PermGen to Metaspace
https://www.javacodegeeks.com/2013/02/java­8­from­permgen­to­metaspace.html 6/6
Final words
I hope you appreciated this early analysis and experiment with the new Java 8 Metaspace. The
current observations definitely indicate that proper monitoring & tuning will be required in order to
stay away from problems such as excessive Metaspace GC or OOM conditions triggered from our
last testing scenario. Future articles may include performance comparisons in order to identify
potential performance improvements associated with this new feature.
 

More Related Content

ODP
Java 9 Features
PDF
Java11 New Features
PDF
Java 10 New Features
PDF
OpenJDK-Zulu talk at JEEConf'14
PPTX
JDK 9, 10, 11 and Beyond
PPTX
JSR 168 Portal - Overview
PPTX
Moving Towards JDK 12
PDF
Java 9 preview
Java 9 Features
Java11 New Features
Java 10 New Features
OpenJDK-Zulu talk at JEEConf'14
JDK 9, 10, 11 and Beyond
JSR 168 Portal - Overview
Moving Towards JDK 12
Java 9 preview

What's hot (20)

PPT
uPortal Roadmap
PPTX
Springboot2 postgresql-jpa-hibernate-crud-example with test
PPTX
What's new in Java 11
PPTX
Java 9 Modularity and Project Jigsaw
PDF
Java 12 - New features in action
PDF
The features of java 11 vs. java 12
PPTX
The latest features coming to Java 12
PDF
Java 9 New Features
PDF
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
DOCX
Data Base Testing Interview Questions
DOC
UFT An advance version of QTP
PDF
Java 8 Overview
PPTX
JDK 14 Lots of New Features
PDF
JDK-9: Modules and Java Linker
PDF
PPTX
Pure Java RAD and Scaffolding Tools Race
PDF
Highlights from Java 10-13 and Future of Java at JCON 2019 by Alukhanov and K...
PPTX
Apache Maven supports all Java (JokerConf 2018)
PPTX
Exploring Java Heap Dumps (Oracle Code One 2018)
PDF
Head toward Java 14 and Java 15 #LINE_DM
uPortal Roadmap
Springboot2 postgresql-jpa-hibernate-crud-example with test
What's new in Java 11
Java 9 Modularity and Project Jigsaw
Java 12 - New features in action
The features of java 11 vs. java 12
The latest features coming to Java 12
Java 9 New Features
Highlights from Java 10, 11 and 12 and Future of Java at Javaland 2019 By Vad...
Data Base Testing Interview Questions
UFT An advance version of QTP
Java 8 Overview
JDK 14 Lots of New Features
JDK-9: Modules and Java Linker
Pure Java RAD and Scaffolding Tools Race
Highlights from Java 10-13 and Future of Java at JCON 2019 by Alukhanov and K...
Apache Maven supports all Java (JokerConf 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
Head toward Java 14 and Java 15 #LINE_DM
Ad

Similar to Java 8 from perm gen to metaspace (20)

PPTX
Java and OpenJDK: disecting the ecosystem
ODP
GlassFish and JavaEE, Today and Future
PDF
FFM / Panama: A case study with OpenSSL and Tomcat
PPT
Tech Days 2010
DOCX
Java 7 Dolphin manjula kollipara
PDF
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
PPTX
Comparison between Oracle JDK, Oracle OpenJDK, and Red Hat OpenJDK.v1.0.20191009
PPTX
Comparison between Oracle JDK, Oracle OpenJDK, and Red Hat OpenJDK
PDF
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
PDF
Java 17 Recipes - A problem-solution approach 4th Edition Josh Juneau
PPT
Java EE 6 & Spring: A Lover's Quarrel
PPSX
Java 9 and the impact on Maven Projects (JavaOne 2016)
DOCX
Integrating tomcat with apache
DOCX
Apache tomcat
PDF
Apache Tomcat 8 Application Server
PDF
What's Expected in Java 7
ODP
Java EE 6 & GlassFish v3: Paving path for the future
PDF
Java EE 6 : Paving The Path For The Future
ODP
Java 7: Quo vadis?
PPTX
Java dev mar_2021_keynote
Java and OpenJDK: disecting the ecosystem
GlassFish and JavaEE, Today and Future
FFM / Panama: A case study with OpenSSL and Tomcat
Tech Days 2010
Java 7 Dolphin manjula kollipara
Java Webinar #12: "Java Versions and Features: Since JDK 8 to 16"
Comparison between Oracle JDK, Oracle OpenJDK, and Red Hat OpenJDK.v1.0.20191009
Comparison between Oracle JDK, Oracle OpenJDK, and Red Hat OpenJDK
Jakarta EE 最前線 - Jakarta EEの現在、ロードマップなど
Java 17 Recipes - A problem-solution approach 4th Edition Josh Juneau
Java EE 6 & Spring: A Lover's Quarrel
Java 9 and the impact on Maven Projects (JavaOne 2016)
Integrating tomcat with apache
Apache tomcat
Apache Tomcat 8 Application Server
What's Expected in Java 7
Java EE 6 & GlassFish v3: Paving path for the future
Java EE 6 : Paving The Path For The Future
Java 7: Quo vadis?
Java dev mar_2021_keynote
Ad

More from Mohammad Faizan (18)

DOCX
Colloquium Report
PDF
Jdbc basic features
PDF
Tutorial c#
PPTX
SOFTWARE TESTING UNIT-4
PPTX
Software maintenance Unit5
PDF
Hibernate using jpa
PDF
Jvm internal detail
PPTX
Unit3 Software engineering UPTU
PPTX
Unit2 Software engineering UPTU
PPT
hibernate with JPA
PDF
Allama Iqbal shiqwa with meaning
PDF
Web tech chapter 1 (1)
PPT
Mdm intro-chapter1
PPT
Hill climbing
PPT
Coda file system tahir
PPT
Chapter30 (1)
PPT
Ai4 heuristic2
PPT
Chapter30
Colloquium Report
Jdbc basic features
Tutorial c#
SOFTWARE TESTING UNIT-4
Software maintenance Unit5
Hibernate using jpa
Jvm internal detail
Unit3 Software engineering UPTU
Unit2 Software engineering UPTU
hibernate with JPA
Allama Iqbal shiqwa with meaning
Web tech chapter 1 (1)
Mdm intro-chapter1
Hill climbing
Coda file system tahir
Chapter30 (1)
Ai4 heuristic2
Chapter30

Recently uploaded (20)

PDF
Anesthesia in Laparoscopic Surgery in India
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
Classroom Observation Tools for Teachers
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
Basic Mud Logging Guide for educational purpose
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Insiders guide to clinical Medicine.pdf
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PPTX
master seminar digital applications in india
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Anesthesia in Laparoscopic Surgery in India
Renaissance Architecture: A Journey from Faith to Humanism
Classroom Observation Tools for Teachers
2.FourierTransform-ShortQuestionswithAnswers.pdf
Supply Chain Operations Speaking Notes -ICLT Program
Final Presentation General Medicine 03-08-2024.pptx
human mycosis Human fungal infections are called human mycosis..pptx
TR - Agricultural Crops Production NC III.pdf
102 student loan defaulters named and shamed – Is someone you know on the list?
Basic Mud Logging Guide for educational purpose
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
VCE English Exam - Section C Student Revision Booklet
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Insiders guide to clinical Medicine.pdf
Abdominal Access Techniques with Prof. Dr. R K Mishra
O5-L3 Freight Transport Ops (International) V1.pdf
master seminar digital applications in india
STATICS OF THE RIGID BODIES Hibbelers.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
school management -TNTEU- B.Ed., Semester II Unit 1.pptx

Java 8 from perm gen to metaspace