在linux上的程序放到AIX560上,结果一跑就coredown.
用ulimit -a查看限制,发现内存限制太小。将内存改为无限制(也可以用smit),
ulimit -m unlimited 内存
ulimit -s unlimited 堆栈
ulimit -d unlimited 数据段
发现程序最多可以申请256M内存,再多还是coredown。
再将
export LDR_CNTRL=MAXDATA=0x40000000 1G
export LDR_CNTRL=MAXDATA=0x80000000 2G
也最多可以申请2G空间,以上是用32位编译的。
采用64位编译(-q64)后。
export LDR_CNTRL=MAXDATA=0xD0000000
export LDR_CNTRL=MAXDATA=0xF0000000 4G
可以最多申请4G空间。
最后设置
export LDR_CNTRL=MAXDATA=0xF00000000 4G
几乎可以申请无限空间(超出物理内存)。
设置该环境变量同时,可以设置使用dsa属性和是否使用最大页
eg:
export LDR_CNTRL=MAXDATA=0xF00000000@dsa
export LDR_CNTRL=MAXDATA=0xF00000000@LARGE_PAGE_DATA=y
如果使用32位编译的话,可以通过共享内存来扩展超过2G的内存申请。
以上环境变量仅对当前对话有效,也可以单独设置到程序中,
采用编译或者启动时添加选项都可以
eg:
cc -bmaxdata:0xD0000000/dsa sample.o
LDR_CNTRL=MAXDATA=0xF00000000 a.out