O que está contido nas seções de código / internas do JCMD?

Dimensionar um contêiner de docker para um serviço baseado em JVM é complicado (como todos sabemos). Tenho certeza de que sub-dimensionamos um contêiner um pouco e queremos esclarecer algumas perguntas relacionadas a saídas específicas do jcmd (Native Memory Tracker) que vemos ao monitorar.

Questões:

Os buffers de byte direto estão incluídos em "Interno", conforme relatado pelo jcmd?O que mais, além do cache de código, está no "Código", conforme relatado pelo jcmd?Existe uma boa maneira de limitar a seção "Código", conforme relatado pelo jcmd. Eu lihttps://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm mas isso cobre apenas os limites do cache de código e é recomendável deixar o padrão da JVM como está.

Saída JCMD é aqui.

Buffers de byte direto As propriedades JMX estão aqui.

Alguns detalhes do plano de fundo:

A instalação:

Aplicativo baseado em boot

Opções da JVM:

-servidor -Xms1792m -Xmx1792m -XX: MetaspaceSize = 128M - XX: MaxMetaspaceSize = 192M -XX: + UseG1GC -XX: + UseStringDeduplication - XX: MaxDirectMemorySize = 256m -XX: NativeMemoryTracking = detalhe

Contêiner do Docker 2500MiB em execução no AWS / EC2

questionAnswers(1)

yourAnswerToTheQuestion