重新部署Wildfly会导致内存不足:元空间

Mar*_*idy 5 java spring wildfly-8

我目前正在调查一些我们最近遇到的元空间问题。罪魁祸首之一似乎是在重新部署WAR时加载了重复的类。完全取消部署后,通过堆转储在本地使用我们的一种WARS进行尝试,我可以看到该应用程序创建的大多数实例仍然存在(即使在垃圾回收之后)。

从堆转储中,我可以看到似乎是保留引用的ManagedThreadFactoryImpl。

有什么我可以做的事情/可以添加到应用程序关闭过程中,以便它在运行后自动清理吗?

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

我们将JDK8与Wildfly 8.2一起使用

Nik*_*Nik 0

似乎类加载器没有卸载。尝试 Java Mission Control (JMC) 并记录用例。这使您可以转到录制中的特定时间点并调试问题。它提供了在特定时间加载的类的快照,包括堆栈跟踪、线程转储和许多重要的内容。

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

您不必经历获取堆转储的痛苦,然后等待工具对其进行分析。