Notes de version Solaris 10

x86 : Restrictions d'allocation de mémoire des applications sur les systèmes x86

Les applications Solaris allouent de la mémoire à l'aide de fonctions, telles que malloc(), brk() ou mmap(). La quantité maximale de mémoire qu'une application peut allouer est limitée par la taille de l'espace d'adressage virtuel de l'utilisateur. L'argument de programmation, la pile, les données et les bibliothèques qui sont contenus dans l'espace d'adressage virtuel de l'utilisateur peuvent contribuer à réduire davantage la taille maximale de la mémoire allouée.

Environnement informatique 32 bits

Dans un environnement informatique 32 bits, l'espace d'adressage virtuel 32 bits est partagé entre l'utilisateur et le noyau. Par conséquent, la taille de l'espace d'adressage virtuel de l'utilisateur est de 4 giga-octets moins la taille de l'espace d'adressage virtuel du noyau. La configuration de la taille de l'espace d'adressage virtuel du noyau dépend de la taille de la mémoire physique. Alors que la taille de la mémoire physique augmente, la taille de l'espace d'adressage virtuel de l'utilisateur diminue. Dans le cas des systèmes dotés de 8 giga-octets de mémoire, la taille de l'espace d'adressage virtuel de l'utilisateur est environ 3 giga-octets.

Si les restrictions d'allocation de mémoire sont insuffisantes pour une application, vous avez deux possibilités :

Environnement informatique 64 bits

Dans un environnement informatique 64 bits, l'espace d'adressage virtuel pour les applications 32 bits est alloué entièrement à l'utilisateur. Par conséquent, une application 32 bits peut allouer 4 giga-octets moins l'espace d'adressage virtuel de l'utilisateur nécessaire pour l'argument, la pile et les bibliothèques.

Sur certains anciens processeurs AMD 64 bits, la restriction d'allocation de la mémoire peut être encore réduite d'un giga-octet. Pour déterminer si votre processeur est concerné, procédez comme suit :

  1. Exécutez la commande pmap depuis n'importe quel shell 32 bits.

  2. Sur l'affichage des processus, vérifiez si les adresses supérieures ou égales à 0xC0000000 sont répertoriées. Si ces adresses n'existent pas, le système d'exploitation a alors limité les applications 32 bits à 3 giga-octets pour une plage d'adresses virtuelles de 4 giga-octets.

Une application 64 bits peut allouer 250 téraoctets de mémoire en fonction de la mémoire déjà utilisée par cette application.