TOMCAT 热部署导致 Caused by: java.lang.outOfMemoryError: Metaspace

发布时间 2023-04-24 16:27:47作者: vincent19

操作系统:Ubuntu 20.04.5 LTS

JAVA版本:1.8.0_362

TOMCAT版本:Apache Tomcat 8.5

1.问题描述

  tomcat 在热部署时很容易造成OOM

 

2.问题产生的原因:

  当Java虚拟机(JVM)的元空间内存不足时,就会发生此错误。元空间是用于存储类元数据(如类名、方法名和字段名)的内存的一部分。元空间是Java堆的一部分,用于存储有关类和方法的元数据。JVM加载一个类时,会在元空间中存储有关该类的信息。如果元空间内存不足,JVM将无法再加载任何类,应用程序将因OutOfMemoryError而崩溃。要修复此错误,可以在启动JVM时通过设置-XX:MaxMetaspaceSize参数来增加元空间的大小。例如,您可以将参数设置为512m,为元空间分配512兆字节的内存:java-XX:MaxMetaspaceSize=512m我的应用程序您还可以尝试减少应用程序使用的类和类加载器的数量,因为这有助于减少元空间中的内存使用。此外,您可以尝试优化应用程序代码,以减少需要存储在元空间中的元数据量。

3.解决方案。

  调整jvm参数 MaxMetaspaceSize,原来时350m,现加大至500m。

 -XX:MaxMetaspaceSize=500M