如何在Tomcat上通过JPA,Hibernate和Spring避免Classloader泄漏

如何在Tomcat上通过JPA,Hibernate和Spring避免Classloader泄漏,第1张

如何在Tomcat上通过JPA,Hibernate和Spring避免Classloader泄漏

我已经在Tomcat7 + OpenJPA2.4.1 + ValidationAPI1.x + hibernate-validator-5.2.1 +
jboss-logging.jar上看到了相同的webapp内存泄漏

问题确实是jboss-
logging.jar创建了java.util.logging.Level实例的子类。如果J2EE容器提供了jar,则可能不是问题,但mywebapp /
WEB-INF / lib发行版中会发生这种情况。我创建了一个包的分支以禁用子类化。问题消失了,Webapp热部署工作正常。

GC根路径的堆转储指示问题的根源,JDKLevel子类将Web应用程序保留在内存中,并且JVM很快耗尽了PermGen内存。

this     - value: org.apache.catalina.loader.WebappClassLoader #2 <- <classLoader>     - class: org.jboss.logging.JDKLevel, value: org.apache.catalina.loader.WebappClassLoader #2  <- <class>     - class: org.jboss.logging.JDKLevel, value: org.jboss.logging.JDKLevel class JDKLevel   <- levelObject     - class: java.util.logging.Level$KnownLevel, value: org.jboss.logging.JDKLevel #6    <- [1]     - class: java.lang.Object[], value: java.util.logging.Level$KnownLevel #12     <- elementData     - class: java.util.ArrayList, value: java.lang.Object[] #5160 (10 items)      <- value     - class: java.util.HashMap$Entry, value: java.util.ArrayList #3532       <- [0]     - class: java.util.HashMap$Entry[], value: java.util.HashMap$Entry #21639        <- table     - class: java.util.HashMap, value: java.util.HashMap$Entry[] #280 (16 items)         <- intToLevels (sticky class)     - class: java.util.logging.Level$KnownLevel, value: java.util.HashMap #375

编辑 为此错误创建的JBoss
Jira票证(https://issues.jboss.org/browse/JBLOGGING-118)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5442321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存