当使用ehcache作为常规依赖项并将其加载到WAR / lib文件夹中时,效果很好。但是,正如ehcache网站上所述,尝试重新部署时,我们遇到了内存泄漏问题:
https://www.ehcache.org/documentation/2.8/integrations/tomcat.html#class-loader-memory-leak
我正在尝试清理它们,但请执行以下操作:
- 为项目org.ehcache.jcache添加
<scope>provided</scope>
- 将javax.cache,org.ehcache.jcache和org.slf4j jar文件放在Tomcat / lib中
我遇到了错误:
原因:java.util.ServiceConfigurationError:javax.cache.spi.CachingProvider:提供者org.ehcache.jcache.JCacheCachingProvider不是子类型 在java.util.ServiceLoader.fail(ServiceLoader.java:231)
这很奇怪,因为https://github.com/ehcache/ehcache-jcache/blob/v1.0.1/ehcache-jcache/src/main/java/org/ehcache/jcache/JCacheCachingProvider.java正在实现javax.cache.spi.CachingProvider
删除<scope>provided</scope>
并允许战争覆盖Tomcat / lib导致一切恢复正常(内存泄漏和全部)。
我已经了解了org.ehcache.jcache
的Maven依赖关系树,看起来只需要4个jar。这可能是版本控制问题?也许用org.ehcache.jcache
替换net.sf.ehcache
/ org.ehcache.ehcache
可能会解决问题?但是我想先检查一下这里,然后再执行该过程。