Recently I have migrated one of my application from JDK 6 to JDK 8. Once I have migrated to Java 8, I observed the Heap memory is completely getting saturated & CPU consumption is also very high and application is becoming unresponsive.
From thread dump it becomes clear JAXB was taking the memory. Below approach was taken to resolve the issue.
1. Limit the Metaspace max size:
As Metaspace in Java 8 has no limit hence it was taking the complete heap memory over a period of time; hence set the metaspace max limit using below one in JVM Argument
-XX:MaxMetaspaceSize=512m - sets the maximum size of the Metaspace to 512 MB
2. JAXB configuration optimization:
As my application uses lots of XML marshalling & unmarshalling. Hence below addition configuration was required in JVM Argument
-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true
Useful link for MetaSpace:
http://java-latte.blogspot.com/2014/03/metaspace-in-java-8.html
From thread dump it becomes clear JAXB was taking the memory. Below approach was taken to resolve the issue.
1. Limit the Metaspace max size:
As Metaspace in Java 8 has no limit hence it was taking the complete heap memory over a period of time; hence set the metaspace max limit using below one in JVM Argument
-XX:MaxMetaspaceSize=512m - sets the maximum size of the Metaspace to 512 MB
2. JAXB configuration optimization:
As my application uses lots of XML marshalling & unmarshalling. Hence below addition configuration was required in JVM Argument
-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true
Useful link for MetaSpace:
http://java-latte.blogspot.com/2014/03/metaspace-in-java-8.html
No comments:
Post a Comment