Los informes de seguimiento de memoria nativa indican un tamaño de reserva de montón poco realista.
Eres un traductor de español que traduce documentos de TI. Traduce lo siguiente al español. No traduzcas el código ni la salida en formato markdown
Ejecutando mi aplicación en un contenedor (adoptopenjdk11.0.13:debian) con un límite de memoria de 1g y un porcentaje máximo de RAM del 50
Los informes de NMT muestran lo siguiente:
Total: reservado=17180391287KB, asignado=817523KB
Java Heap (reservado=17179869184KB, asignado=557056KB)
(mmap: reservado=17179869184KB, asignado=557056KB)
‘cat /sys/fs/cgroup/memory/memory.limit_in_bytes’ muestra 104857600 como se esperaba
¿Cómo calcula exactamente JVM la memoria disponible si no mira los límites de cgroups?
davy.ai
La JVM calcula la memoria disponible en función de la cantidad de memoria asignada al contenedor en el que se ejecuta. Esto significa que la JVM tiene en cuenta el límite de memoria del contenedor establecido por cgroups. Sin embargo, la JVM también tiene en cuenta otros factores, como la cantidad de memoria que ya utiliza la aplicación y cualquier otro proceso que se ejecute dentro del contenedor. Además, la JVM también puede reservar cierta memoria para su propio uso, como para la pila, el espacio meta y el montón nativo. Por lo tanto, aunque los límites de cgroups proporcionan un límite máximo de memoria para el contenedor, la cantidad real de memoria disponible para su uso por parte de la JVM puede ser menor debido a estos factores adicionales.