JVM排查问题分析
JVM Permspace、Metaspace空间使用问题
问题描述:
1)tomcat启动过程中,出现PermSize Out Of Memory错误。报错如下:Exception in thread “main” java.lang.OutOfMemoryError: PermGen space
2)tomcat运行一段时间,出现“Tomcat JVM Perm区使用率超过90%”、“Tomcat JVM Meta区使用率超过90%”的告警。
原因分析:
JVM永久性内存区域PERM不足,需要调大。该内存区域用于存放加载的class字节文件,通常根据部署应用的使用情况设定。
规范默认配置JDK1.7(-XX:PermSize=512m -XX:MaxPermSize=512m),JDK1.8(-XX:MetaspaceSize=512m -XX:MaxMetaspaceSize= 512m),部分tomcat的配置值不合理。
解决方案:
PermSize和MaxPermSize、MetaspaceSize和MaxMetaspaceSize保持大小一致,按应用实际情况可调整,建议不高于1024m。
如Perm使用频繁,建议加参数:-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingPermOccupancyFraction=75。
如果再大就建议联系研发排查,可使用jmap -permstat命令打印加载类的对象。
分析工具:MemoryAnalyzer-1.6.1.20161125-win32.win32.x86_64.zip