Wildfly 8.2.1上部署的Java 8应用程序的元空间内存流量问题

And*_*rew 7 java memory-leaks jms wildfly metaspace

问题说明

我注意到我们在Wildfly 8.2.1上的每个Java8应用程序的部署使用了大约30-40 MB的Metaspace内存池.这很好,但事实是,一旦我重新部署相同的应用程序,Metaspace内存使用量将增加相同的30-40 MB,而旧的已分配的内存不会被释放.

我甚至都没有注意到它,但问题是我们有大约20个应用程序,并且我不时需要同时重新部署其中的10个应用程序.这反过来会导致一幅可怕的画面.

在此输入图像描述 基本上显示的是~10个应用程序的2次重新部署.

我不确定为什么GC无法释放分配给旧类的内存.这个服务器总共有16GB的物理内存,所以我可以重新部署所有应用程序,最多20-40次就是这样.应用服务器将达到限制并将停止响应任何命令.

所以,如果有人能帮我理解实际问题,我将非常感激:

  1. 这是Java8问题吗?(jdk 1.8.0_40-b26)
  2. 它是Wildfly 8.2.1的问题吗?
  3. 或者答案尽可能简单,原因是我的代码库?如果是这样,那么请你指导我可能是什么原因?

有关我的代码库的更多细节

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