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