6 votes

Pourquoi la réservation de la mémoire virtuelle Java est-elle si élevée? Bug?

Sur mon Mac Os 10.5.8 Server, Java réserve 16 777 216 To (environ un tiers de plus que la somme de toutes les connaissances humaines -ouah!) de mémoire virtuelle. Je sais qu'il ne réserve pas réellement cela (ce serait assez incroyable si c'était le cas!); est-ce quelque chose à craindre (c'est-à-dire un bug / glitch), et sinon, que cela signifie-t-il?

entrer la description de l'image ici

1voto

Mario Marinato -br- Points 2933

16 Mébi TebiOctets (16 ExbiOctets) équivaut à 2^64 octets. Votre machine doit utiliser un adressage sur 64 bits, et votre JVM (Java Virtual Machine) a probablement écrit quelque chose à l'adresse 0xffffffffffffffff dans son propre espace d'adressage virtuel (peut-être en écrivant accidentellement à l'adresse qui est une de moins que 0x0000000000000000), ce qui a poussé le sous-système de mémoire virtuelle du noyau Mac OS X à considérer que le processus utilise tout l'espace d'adressage virtuel du processus.

Ne vous inquiétez pas, la mémoire virtuelle est dispersée. C'est-à-dire qu'elle n'alloue pas des pages mémoire (ou un espace d'échange sur le disque) pour chaque adresse mappée, seulement pour les pages mémoire que votre processus a réellement écrites. Mais je suppose que c'est déjà évident à moins que vous ayez un RAID de 16+ ExbiOctets monté sur / ou sur /var/vm/ où se trouvent vos fichiers d'échange de mémoire virtuelle. :-)

Voir un processus provoquer le mappage de tout son espace d'adressage virtuel sur 64 bits est une curiosité, mais ne devrait pas causer de problèmes.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X