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.
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 :
Réduisez la taille par défaut de l'espace d'adressage virtuel du noyau pour augmenter la taille de l'espace d'adressage virtuel de l'utilisateur. Vous pouvez attribuer une valeur plus élevée à la variable kernelbase à l'aide de la commande eeprom. Faites attention en changeant la valeur de la variable kernelbase. Sinon, un système avec un espace d'adressage virtuel du noyau plus petit risque de ne pas fonctionner correctement ou de tomber en panne.
Exécutez l'application dans l'environnement informatique 64 bits de Solaris x86 (cette solution est préférable à la première).
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 :
Exécutez la commande pmap depuis n'importe quel shell 32 bits.
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.