And*_*rew 7 java memory-leaks jms wildfly metaspace
问题说明
我注意到我们在Wildfly 8.2.1上的每个Java8应用程序的部署使用了大约30-40 MB的Metaspace内存池.这很好,但事实是,一旦我重新部署相同的应用程序,Metaspace内存使用量将增加相同的30-40 MB,而旧的已分配的内存不会被释放.
我甚至都没有注意到它,但问题是我们有大约20个应用程序,并且我不时需要同时重新部署其中的10个应用程序.这反过来会导致一幅可怕的画面.
我不确定为什么GC无法释放分配给旧类的内存.这个服务器总共有16GB的物理内存,所以我可以重新部署所有应用程序,最多20-40次就是这样.应用服务器将达到限制并将停止响应任何命令.
所以,如果有人能帮我理解实际问题,我将非常感激:
有关我的代码库的更多细节
1)与Wildfly一起使用2个独立的HornetQ服务器,每个应用程序使用~5个通道,每个通道至少有5个并发消费者.这反过来导致每个应用程序至少25个线程,总共至少25*20 = 500个线程.
2)对于所有低级JMS操作,我使用Spring JMS.
小智 1
WildFly 10.0.0.Final “java.lang.OutOfMemoryError: Metaspace” 发生并将被修复。参考关注Wildfly敏捷委员会
https://issues.jboss.org/browse/WFLY-6173