Différence entre la mémoire utilisée, validée et maximale

Je surveille une machine virtuelle d’exécuteur d’étincelle d’une exception OutOfMemoryException. J’ai utilisé Jconsole pour me connecter à l’exécutant JVM. Voici l’instantané de Jconsole: entrer la description de l'image ici

Dans l’image utilisée, la mémoire est indiquée en 3.8G et la mémoire dédiée est de 8.6G et la mémoire maximale est également de 8.6G. Quelqu’un pourrait-il expliquer la différence entre la mémoire utilisée et la mémoire validée ou tout lien qui l’explique?

Du Java Doc de MemoryUsage ,

getUsed est:

la quantité de mémoire utilisée en octets

getCommitted ()

Renvoie la quantité de mémoire en octets validée pour la machine virtuelle Java à utiliser. Cette quantité de mémoire est garantie pour la machine virtuelle Java à utiliser.

getMax ()

Renvoie la quantité maximale de mémoire en octets pouvant être utilisée pour la gestion de la mémoire. Cette méthode renvoie -1 si la taille maximale de la mémoire est indéfinie.

Cette quantité de mémoire n’est pas garantie d’être disponible pour la gestion de la mémoire si elle est supérieure à la quantité de mémoire validée. La machine virtuelle Java peut ne pas allouer de mémoire même si la quantité de mémoire utilisée ne dépasse pas cette taille maximale.