AIX的處理器PowerPC有16個地址寄存器,對應的AIX下32位進程地址空間分爲16段,每段256M,默認配置所有Userdata、heap、Stack最多佔用一段256M,共享內存可以分配11段。
USERDATA、heap、stack三種最常用的內存只有256M,只能應付一般情況,AIX系統中經常出現內存耗盡異常。解決方法是增加MAXDATA值。
(1) 編譯時,ld命令增加參數“-bmaxdata:0x80000000”,指定編譯產生的進程可以使用到1.5G堆棧,段2---段8,執行“dump –ov XXX”可以查看可執行文件頭部的可變參數。
(2) AIX5.1後使用“ldedit –bmaxdata:0x80000000”可以修改可執行文件的MAXDATA值。
(3) AIX4.3後可以修改環境變量“LDR_CNTRL=MAXDATA=0x80000000”,環境變量生效後,所有啓動的進程都可以使用1.5G的userdata。
增加MAXDATA後,必然壓縮共享內存的使用空間。