JVM(lucee)Metaspace不断增加

JVM(lucee)Metaspace不断增加

我有一个正在生产中的 lucee (ColdFusion) 服务器。

一开始,我们遇到了操作系统内存耗尽的问题。我们将 减少-Xmx2048m到可用内存的一半,然后设置-XX:MaxMetaspaceSize=1000m

但过了一会儿,lucee 的 tomcat 报告了 OutOfMemory 错误,需要重新启动。

由于元空间是堆的附加部分,并且默认情况下不受限制,这表明元空间已填满。

然后我添加了一个常规jcmd <pid> VM.metaspace来验证这个假设。早上,我有:

 garbage-first heap   total 1572864K, used 959885K [0x0000000080000000, 0x0000000100000000)
  region size 1024K, 249 young (254976K), 18 survivors (18432K)
 Metaspace       used 99985K, capacity 102839K, committed 104996K, reserved 1114112K
  class space    used 7301K, capacity 8154K, committed 8320K, reserved 1015808K

晚上:

 garbage-first heap   total 1616896K, used 556546K [0x0000000080000000, 0x0000000100000000)
  region size 1024K, 25 young (25600K), 5 survivors (5120K)
 Metaspace       used 108125K, capacity 111035K, committed 113828K, reserved 1122304K
  class space    used 7509K, capacity 8463K, committed 8704K, reserved 1015808K

因此元空间每天增长约 8Mb!

我发现 JAXB 存在导致这种行为的问题,因此我尝试通过添加来解决这个问题-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true,但这并没有帮助,甚至可能使情况变得更糟。

我怎样才能知道到底是什么东西填满了我的元空间?

答案1

我尚未找到解决方案,但有一张未解决的票。我目前必须定期重启服务器以防止崩溃。

请参见

https://luceeserver.atlassian.net/browse/LDEV-2904

https://dev.lucee.org/t/lucee-5-3-5-92-java-non-heap-memory-steadily-increases/6948/23

相关内容