2016-04-21 72 views
3

我目前正在調查一些我們最近遇到的元空間問題。其中一個主要的罪魁禍首似乎是重新部署WAR時重複的類的加載。在本地使用我們的WARS,在完全取消部署後通過堆轉儲進行嘗試,我可以看到應用程序創建的大多數實例仍然存在(即使在垃圾回收之後)。重新部署在螢火蟲上導致超時:元空間

從堆轉儲,我可以看到它似乎是保持引用的ManagedThreadFactoryImpl。

有什麼我可以做/添加到應用程序關閉過程,所以它清理後本身?

我們所有的WAR都是彈簧應用程序,大多數使用調度/異步元素。

我們使用JDK8與Wildfly 8.2

+0

與JDK8和wildfly 10有相同的問題。 – FransGuelinckx

回答

0

好像類加載器不卸載。嘗試Java Mission Control(JMC)並記錄用例。這可以讓您在錄製中進入特定時間點並調試問題。它給出了在特定時間使用堆棧跟蹤,線程轉儲和許多重要事情加載的類的快照。

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

你不必經歷堆堆轉儲的痛苦,然後等待一個工具來分析它。