gpt4 book ai didi

Java EHCache 3 监听器和元空间问题

转载 作者:行者123 更新时间:2023-12-02 02:31:09 24 4
gpt4 key购买 nike

我们在 JBoss EAP 7 中遇到了元空间泄漏问题,并且每次热部署后都会发生此泄漏。

经过一番搜索,我发现了这个: https://blog.voina.org/docker-jboss-dies-with-java-lang-outofmemoryerror-metaspace-after-several-redeploys/

它实际上可能与 EHCache 有关,它保存了一些类引用,这会阻止 JBoss 类加载器从元空间中删除旧类。

在本文中,建议使用 EHCache 库中包含的监听器:

net.sf.ehcache.constructs.web.ShutdownListener

不幸的是,我们使用的是 EHCache 3.2.0,并且该版本中没有这样的监听器,是否有该监听器的替代方案?或者有任何方法可以完成与我可以在“contextDestroyed”方法中调用的完全相同的事情?

最佳答案

不再需要这样的监听器了。但是,在取消部署时关闭 CacheManager 被认为是一种好习惯。如果您在 ServletContextListener 中创建它,那么在那里销毁它似乎是一个好地方。

我不会因为类加载器内存泄漏而把赌注押在 Ehcache 上,但这并非不可能。

诊断它的正确方法是取消部署,然后执行堆转储并查找(在 VisualVM 等工具中) war 中仍然存在的包,然后找到其类加载器,最后找到类加载器的 GC 根。您的泄漏将位于 GC 根的链中。

关于Java EHCache 3 监听器和元空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com