Mémoire virtuelle z/OS
Pour déboguer ces problèmes, vous devez comprendre comment les programmes C/C + +, tels que la machine virtuelle Java, utilisent la mémoire virtuelle sur z/OS®. Pour ce faire, vous avez besoin de connaissances de base sur le composant z/OS Virtual Storage Management et LE.
L'espace d'adressage de processus sur z/OS 31 bits dispose d'un adressage 24 bits qui permet l'adressage de 16 Mo de mémoire virtuelle maximum et d'un adressage 31 bits qui permet l'adressage de 2 Go de mémoire virtuelle maximum. L'espace adresse de processus sur z/OS 64 bits dispose également d'un adressage 64 bits qui permet l'adressage de plus de 2 Go de mémoire virtuelle. Cette mémoire virtuelle inclut des zones définies comme communes (adressables par les différents codes exécutés dans tous les espaces d'adressage) et d'autres zones qui sont privées (adressables par le code exécuté dans cet espace d'adressage uniquement).
La taille des zones communes est définie par plusieurs paramètres du système et par le nombre de modules chargeables qui y sont chargés. Sur la plupart des systèmes standard, la zone 31 bits privée totale disponible est d'environ 1,4 Go. Dans cette zone, les ressources mémoire nécessaires à la JVM et à ses sous-composants, tels que JIT, sont allouées par des appels à malloc(). Ces ressources incluent: les bibliothèques natives Java™ , le segment de mémoire Java (si vous utilisez une machine virtuelle Java 31 bits), les classes Java (si vous utilisez une machine virtuelle Java 31 bits ou une machine virtuelle Java 64 bits avec des références compressées), la mémoire requise par le code JNI de l'application et les bibliothèques natives de tiers.
Une exception Java OutOfMemoryError se produit généralement lorsque le segment de mémoire Java est épuisé, mais peut également se produire lorsque l'une des zones de mémoire privée est épuisée, par exemple s'il existe de nombreuses unités d'exécution. Losrqu'un grand nombre d'unités d'exécution sont utilisées, la mémoire de pile native peut vite devenir la plus grosse zone de mémoire privée, car dans une JVM 64 bits, l'environnement LE requiert un minimum de 3 Mo par unité d'exécution. Ainsi, pour 2.000 unités d'exécution, l'allocation de mémoire sera de 6 Go ou plus. Pour plus d'informations sur les exceptions d' OutOfMemoryError, voir Réception des exceptions d' OutOfMemoryError. Pour plus d'informations sur l'allocation de mémoire d' z/OS, consultez la publication UNIX System Services z/OS Version 2 Release 2 Implementation Redbooks®.