Por que a memória interna no Java Native Memory Tracking está aumentando
Meu aplicativo está sendo executado em um contêiner de docker, ele usa scala e usa "OpenJDK 64-Bit Server VM (build 25.102-b14, modo misto)", seu Xmx é definido como 16 GB e o limite de memória do contêiner é 24 GB, depois de ser executado por alguns quando o contêiner é morto:
Last State: Terminated
Reason: OOMKilled
Exit Code: 137
No entanto, não consigo encontrar nenhum erro "java.lang.OutOfMemoryError: Java heap space" no log, nem mesmo uma vez nas últimas 2 semanas em todos os 48 nós. Portanto, não é provável que uma OOM de pilha normal.
saída dmesg:
$ dmesg -l err,crit,alert,emerg
STDIN is not a terminal
[1647254.978515] Memory cgroup out of memory: Kill process 10924 (java) score 1652 or sacrifice child
[1647254.989138] Killed process 10924 (java) total-vm:34187148kB, anon-rss:24853120kB, file-rss:23904kB
[1655749.664871] Memory cgroup out of memory: Kill process 1969 (java) score 1652 or sacrifice child
[1655749.675513] Killed process 1969 (java) total-vm:35201940kB, anon-rss:24856624kB, file-rss:24120kB
[1655749.987605] Memory cgroup out of memory: Kill process 2799 (java) score 1656 or sacrifice child
Em seguida, executo o JCMD várias vezes antes de ser morto novamente e os dados se parecem com o seguinte: Rastreamento de memória nativa:
Total: reservado = 25505339KB, confirmado = 25140947KB - Heap Java (reservado = 16777216KB, confirmado = 16777216KB) (mmap: reservado = 16777216KB, confirmado = 16777216KB)
Classe (reservada = 247996KB, confirmada = 93500KB) (classes # 14539) (malloc = 2236KB # 29794) (mmap: reservada = 245760KB, confirmada = 91264KB)
Tópico (reservado = 1013160 KB, confirmado = 1013160 KB) (tópico # 1902) (pilha: reservado = 1003956 KB, confirmado = 1003956 KB) (malloc = 6240 KB # 9523) (arena = 2964 KB # 3803)
Código (reservado = 263255KB, confirmado = 86131KB) (malloc = 13655KB # 20964) (mmap: reservado = 249600KB, confirmado = 72476KB)
GC (reservado = 776174 KB, confirmado = 776174 KB) (malloc = 120814 KB # 164310) (mmap: reservado = 655360 KB, confirmado = 655360 KB)
Compilador (reservado = 812 KB, confirmado = 812 KB) (malloc = 681 KB # 1823) (arena = 131 KB # 3)
Interno (reservado = 6366260 KB, confirmado = 6366256 KB) (malloc = 6366256 KB # 178778) (mmap: reservado = 4KB, confirmado = 0 KB)
Símbolo (reservado = 18391KB, confirmado = 18391KB) (malloc = 16242KB # 153138) (arena = 2150KB # 1)
Rastreamento de memória nativa (reservado = 9002 KB, confirmado = 9002 KB) (malloc = 186 KB # 2000) (sobrecarga de rastreamento = 8816 KB)
Pedaço da arena (reservado = 273KB, comprometido = 273KB) (malloc = 273KB)
Desconhecido (reservado = 32800 KB, confirmado = 32 KB) (mmap: reservado = 32800 KB, confirmado = 32 KB)
Uma coisa que notei é esta seção: Interno (reservado = 6366260KB, confirmado = 6366256KB)
Ele continua crescendo e fazendo com que o uso total de memória exceda o limite de 24 GB.
Alguém já viu um problema semelhante antes? e alguém sabe o que é a memória interna aqui e qual poderia ser a razão pela qual ela continua crescendo sem liberar a memória?