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:
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.