Solaris 應用程式是透過像是 malloc ()、 brk() 或 mmap() 等函數來配置記憶體。應用程式記憶體配置大小的上限受限於使用者虛擬位址空間的大小。使用者虛擬位址空間中所包含的程式文字、堆疊、資料及程式庫會進一步減少記憶體配置大小的上限。
在 32 位運算環境中,使用者及核心共用 32 位元虛擬位址空間。因此,使用者虛擬位址空間的大小是 4 GB 減去核心虛擬位址空間的大小。核心虛擬位址大小的配置視實體記憶體大小而定。實體記憶體大小增加,使用者位址空間減少。在擁有 8 GB 記憶體的系統中,使用者位址空間大小大約為 3 GB。
如果記憶體配置上限對應用程式來說是不足的,您可以有兩個選項:
減少核心虛擬位址空間預設的大小,以增加使用者虛擬位址空間的大小。您可以使用 eeprom 指令將 kernelbase 變數的值設得較高。變更 kernelbase 時應多加注意。否則核心虛擬位址空間較小的系統可能會當機或是效能不佳。
最好在 Solaris x86 64 位元的運算環境中執行應用程式。
在 64 位元運算環境中,32 位元應用程式的虛擬位址空間完全供使用者使用。因此,32 位元應用程式可以配置到 4 GB 整,其中不包括文字、堆疊及程式庫所需的使用者位址空間在內。
對於一些早期的 64 位元 AMD 處理器來說,記憶體配置上限會再少 1 GB。要決定您的處理器是否受影響,請執行下列步驟:
執行任一 32 位元 shell 的 pmap $$ 指令。
在程序對映中,檢查是否列出位址大於等於 0xC0000000。如果這些位址不存在,則 Solaris 作業系統會將 32 位元應用程式限制在 4 GB 虛擬位址範圍中最低的 3 GB。
64 位元應用程式可以配置 250 TB 的記憶體,但需要依據使用的應用程式來決定。