Tomcat创建了多个WebAppClassLoader实例,因此驻留内存使用率很高

时间:2016-09-17 06:39:51

标签: java tomcat jvm classloader tomcat8

Tomcat版本: apache-tomcat-8.0.21
操作系统: Ubuntu
Java版本: 8
工具: VisualVM

在启动tomcat时,驻留内存使用量以mbs开始,达到大约6-7gb(10gb虚拟内存)。堆只有700mb左右。

我的理解是每个Web应用程序只有一个关联的WebAppClassLoader

我们有12个Web应用程序,包括docs examples等。我使用VisualVM工具进行分析,发现在探查器和heapdump中有29个org.apache.catalina.loader.WebappClassLoader个实例。

启动tomcat时,它以12个org.apache.catalina.loader.WebappClassLoader个实例开始,但逐渐增加实例数,并且内存使用量(元空间)也增加,之后tomcat因Caused by: java.lang.OutOfMemoryError: Metaspace而崩溃。我们还没有定义元空间限制。我们没有做任何重新加载webapp操作。

为什么org.apache.catalina.loader.WebappClassLoader的实例数会增加?

我怀疑可能是classloader泄漏并找到了这个link? 但我无法找到WebAppClassLoader的实例,其属性已启动为false。

关于内存泄漏,堆内存变化不大,并且在可接受的范围内。

0 个答案:

没有答案