Solaris-Anwendungen ordnen Arbeitsspeicher zu, indem sie Funktionen wie malloc (), brk() oder mmap() verwenden. Die Speichermenge, die eine Anwendung maximal zuordnen kann, wird von der Größe des virtuellen Benutzeradressraums beschränkt. Programmtext, -stack, -daten und -bibliotheken, die sich im virtuellen Benutzeradressraum befinden, können die Größe der maximal möglichen Speicherzuordnung zusätzlich verringern.
In einer 32-Bit-Computerumgebung wird der virtuelle 32-Bit-Adressraum von Benutzer und Kernel gemeinsam verwendet. Infolgedessen beträgt die Größe des virtuellen Benutzeradressraums 4 GB, abzüglich der Größe des virtuellen Kerneladressraums. Die Konfiguration der Größe des virtuellen Kerneladressraums hängt von der Größe des physischen Arbeitsspeichers ab. Bei steigender Größe des physischen Arbeitsspeichers verringert sich die Größe des Benutzeradressraums. Bei Systemen mit 8 GB RAM beträgt die Größe des Benutzeradressraums ungefähr 3 GB.
Wenn die Grenzwerte für die Speicherzuordnung für eine Anwendung nicht ausreichen, haben Sie zwei Möglichkeiten:
Verringern Sie die Standardgröße des virtuellen Kerneladressraums, um den virtuellen Benutzeradressraum zu vergrößern. Sie können die Variable kernelbase mit dem Befehl eeprom auf einen höheren Wert setzen. Gehen Sie bei der Änderung von kernelbase sehr vorsichtig vor. Andernfalls kann ein System mit einem kleineren virtuellen Kerneladressraum stehen bleiben oder weniger effizient laufen als vorher.
Eine günstigere Alternative besteht in der Ausführung der Anwendung in der Solaris x86 64-Bit-Computerumgebung.
In der 64-Bit-Computerumgebung steht der virtuelle Adressraum für 32-Bit-Anwendungen vollständig dem Benutzer zur Verfügung. Daher kann eine 32-Bit-Anwendung die vollständigen 4 GB zuordnen, abzüglich des Benutzeradressraums, der für Text, Stack und Bibliotheken benötigt wird.
Bei manchen älteren 64-Bit AMD-Prozessoren kann der Grenzwert für die Speicherzuordnung um ein weiteres GB verringert sein. Um festzustellen, ob Ihr Prozessor davon betroffen ist, führen Sie folgende Schritte aus:
Führen Sie den Befehl pmap $$ aus einer beliebigen 32-Bit-Shell aus.
Prüfen Sie in der Prozessübersicht, ob Adressen aufgeführt werden, die größer als oder gleich 0xC0000000 sind. Wenn diese Adressen nicht vorhanden sind, begrenzt das Solaris BS 32-Bit-Anwendungen auf die unteren 3 GB des virtuellen Addressraums von 4 GB.
Eine 64-Bit-Anwendung kann in Abhängigkeit von der aktuellen Speichernutzung durch die Anwendung Arbeitsspeicher in einer Größenordnung von 250 TB zuordnen.