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?
Réponse
Trop de publicités?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.