加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在wildfly上重新部署导致outofmemory:metaspace

发布时间:2020-12-15 02:14:21 所属栏目:Java 来源:网络整理
导读:我目前正在调查我们最近遇到的元空间问题.其中一个主要原因似乎是在重新部署WAR时加载了重复的类.在本地尝试使用我们的一个WARS,通过完全取消部署之后的堆转储,我可以看到应用程序创建的大多数实例仍然存在(即使在垃圾收集之后). 从堆转储中,我可以看到它似
我目前正在调查我们最近遇到的元空间问题.其中一个主要原因似乎是在重新部署WAR时加载了重复的类.在本地尝试使用我们的一个WARS,通过完全取消部署之后的堆转储,我可以看到应用程序创建的大多数实例仍然存在(即使在垃圾收集之后).

从堆转储中,我可以看到它似乎是持有引用的ManagedThreadFactoryImpl.

我可以做什么/添加到应用程序关闭过程,以便它自己清理?

我们所有的WAR都是spring应用程序,大多数使用调度/异步元素.

我们在Wildfly 8.2中使用JDK8

解决方法

好像类加载器没有卸载.尝试 Java Mission Control(JMC)并记录用例.这使您可以在录制中转到特定时间点并调试问题.它给出了在特定时间加载的类的快照,包括stacktrace,threaddumps和许多重要的东西.

JMC包含在JDK中.你可以在这里找到更多信息:https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr002.html#BABIBBDE

您不必经历采取堆转储的痛苦,然后等待工具分析它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读