%20Metaspace%20aumenta%20constantemente.png)
Eu tenho um servidor lucee (ColdFusion) em produção.
No início, encontramos esgotamento da memória do sistema operacional. Reduzimos -Xmx2048m
para metade a memória disponível e definimos -XX:MaxMetaspaceSize=1000m
.
Depois de um tempo, porém, o tomcat do lucee relatou erros OutOfMemory e exigiu uma reinicialização.
Como o metaespaço é um acréscimo ao heap e por padrão não é limitado, isso indica que o metaespaço está sendo preenchido.
Em seguida, adicionei um regular jcmd <pid> VM.metaspace
para verificar essa suposição. De manhã, eu tenho:
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
e a noite:
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
Portanto, o metaespaço está crescendo cerca de 8 MB por dia!
Eu descobri que o JAXB tinha um problema que causava esse comportamento, então tentei essa solução adicionando, -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true
mas não ajudou ou talvez tenha piorado.
Como posso descobrir o que diabos está preenchendo meu metaespaço?
Responder1
Ainda não encontrei uma solução para isso, mas há um ticket aberto para isso. No momento, estou tendo que reiniciar meu servidor periodicamente para evitar uma falha.
Por favor, veja
https://luceeserver.atlassian.net/browse/LDEV-2904
e
https://dev.lucee.org/t/lucee-5-3-5-92-java-non-heap-memory-steadily-increases/6948/23