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?

questionAnswers(2)

yourAnswerToTheQuestion