web-dev-qa-db-fra.com

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

Je surveille une spark exécuteuse JVM d'une exception OutOfMemoryException. J'ai utilisé Jconsole pour me connecter à l'exécutant JVM. Voici l'instantané de Jconsole: enter image description here

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

30
Alok

À partir 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 à utiliser Java. Cette quantité de mémoire est garantie pour la machine virtuelle à utiliser Java.

getMax ()

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

Il n’est pas garanti que cette quantité de mémoire soit 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 la mémoire même si la quantité de mémoire utilisée ne dépasse pas cette taille maximale.

17
Somnath Musib