Modification du modèle de mémoire (machine virtuelle Java 32 bits)

Trois modèles de mémoire sont disponibles dans la machine virtuelle Java 32 bits.

Vous trouverez plus de détails sur les modèles de mémoire AIX® dans la documentation de votre édition d' AIX. Par exemple: Large program support.

Petit modèle de mémoire

Avec le petit modèle de mémoire par défaut d'une application, l'application n'a qu'un seul segment, le segment 2, dans lequel elle peut exécuter un malloc() sur les données et allouer des piles d'unités d'exécution supplémentaires. Elle possède cependant 11 segments de mémoire partagée dans lesquelles elle peut exécuter une commande mmap() ou shmat() sur les données.

Grand modèle de mémoire

Ce segment unique pour les données allouées avec malloc() peut ne pas être suffisant. Il est donc possible de déplacer la frontière entre les mémoires privée et partagée, en fournissant plus de mémoire privée à l'application, mais en réduisant la quantité de mémoire partagée. Vous déplacez la frontière en modifiant le paramètre o_maxdata dans l'en-tête XCOFF (Executable Common Object File Format) d'une application.

Vous pouvez modifier le paramètre o_maxdata comme suit :
  • Définissez la valeur de o_maxdata lors de la compilation en utilisant l'indicateur -bmaxdata avec la commande ld.
  • Définissez la valeur o_maxdata avec la variable d'environnement LDR_CNTRL=MAXDATA=0xn0000000 (n segments).

Très grand modèle de mémoire

Activez le très grand modèle de mémoire en ajoutant "@DSA" à la fin du paramètre MAXDATA. Il fournit deux fonctions supplémentaires :
  • Le mouvement dynamique de la frontière de mémoire partagée privée et partagée entre un seul segment et le segment spécifié par le paramètre MAXDATA. Ce mouvement dynamique est rendu possible par l'allocation de mémoire privée en remontant vers le haut à partir du segment 3 et de la mémoire partagée en allant vers le bas à partir du segment C. La zone de mémoire privée peut se développer vers le haut dans un nouveau segment si le segment n'est pas utilisé par les routines shmat ou mmap.
  • La capacité à charger des bibliothèques partagées dans la zone de processus privé. Si vous indiquez une valeur MAXDATA de 0 ou supérieure à 0xAFFFFFFF, le processus n'utilisera pas les bibliothèques partagées globales, mais les chargera en privé. Par conséquent, les procédures shmat et mmap commencent à allouer à partir de segments plus élevés, car ils ne sont plus réservés aux bibliothèques partagées. de cette façon, le processus a plus de mémoire contiguë.
La modification du paramètre MAXDATA s'applique uniquement au processus 32 bits et non à la machine virtuelle Java 64 bits.