Le applicazioni Solaris allocano la memoria usando funzioni quali malloc() , brk() o mmap(). La quantità massima di memoria che un'applicazione può allocare è determinata dalle dimensioni dello spazio di indirizzamento virtuale. Il testo, lo stack, i dati e le librerie del programma contenuti nello spazio di indirizzamento virtuale possono ulteriormente ridurre la dimensione massima disponibile per l'allocazione della memoria.
In un ambiente a 32 bit, lo spazio di indirizzamento virtuale a 32 bit viene condiviso tra utente e kernel. Di conseguenza, la dimensione dello spazio di indirizzamento virtuale dell'utente è pari a 4 Gbyte meno la dimensione dello spazio di indirizzamento virtuale del kernel. La configurazione della dimensione dello spazio di indirizzamento virtuale del kernel dipende dalla dimensione della memoria fisica. Quanto più aumenta la dimensione della memoria fisica, tanto più diminuisce quella dello spazio di indirizzamento dell'utente. Su sistemi con 8 Gbyte di memoria, la dimensione dello spazio di indirizzamento dell'utente è di circa 3 Gbyte.
Se i limiti di spazio per l'allocazione della memoria sono insufficienti per un'applicazione, esistono due possibilità:
Ridurre la dimensione predefinita dello spazio di indirizzamento virtuale del kernel per aumentare la dimensione dello spazio di indirizzamento virtuale dell'utente. È possibile impostare la variabile kernelbase a un valore più elevato con il comando eeprom. La modifica di kernelbase deve essere effettuata con molta attenzione. Il rischio è che la riduzione dello spazio di indirizzamento virtuale del kernel possa bloccare il sistema o renderne meno efficiente il funzionamento.
Un'alternativa preferibile è quella di eseguire l'applicazione nell'ambiente di elaborazione a 64 bit di Solaris x86.
Nell'ambiente di elaborazione a 64 bit, lo spazio di indirizzamento virtuale per le applicazioni a 32 bit è interamente a disposizione dell'utente. Ciò significa che un'applicazione a 32 bit può allocare interamente i 4 Gbyte, a cui sarà da sottrarre solo lo spazio di indirizzamento dell'utente necessario per il testo, lo stack e le librerie.
Con alcuni vecchi processori AMD a 64 bit, il limite per l'allocazione della memoria può essere ulteriormente ridotto di 1 Gbyte. Per stabilire se questa limitazione riguarda il processore in uso, procedere come segue:
Eseguire il comando pmap $$ da qualunque shell a 32 bit.
Nella mappa dei processi, determinare se sono presenti indirizzi pari o superiori a 0xC0000000. In caso negativo, significa che Solaris ha limitato le applicazioni a 32 bit all'utilizzo dei 3 Gbyte inferiori dello spazio di indirizzamento virtuale totale (4 Gbyte).
Le applicazioni a 64 bit possono allocare 250 Tbyte di memoria, a seconda dello spazio già in uso.