AIX上进程内存分配有关问题,无法分配超过256M的内存
【求助】AIX下进程内存分配问题,无法分配超过256M的内存在启动一个进程时,分配256M内存时提示C# codemalloc:
【求助】AIX下进程内存分配问题,无法分配超过256M的内存
在启动一个进程时,分配256M内存时提示
C# codemalloc:Not Enough Space
根据提示,我理解是系统对用户内存分配限制问题,因此修改ulimit,内存相关全部修改为ulimited:
C# code# ulimit -atime(seconds) unlimitedfile(blocks) 2097151data(kbytes) unlimitedstack(kbytes) unlimitedmemory(kbytes) unlimitedcoredump(blocks) 2097151nofiles(descriptors) 2000threads(per process) unlimitedprocesses(per user) unlimited
然后执行分配256M内存时程序正常启动,但是当我关闭程序重启,并设置分配288M内存时,又出现相同错误。
问题是我已经显式设置ulimit中内存分配的部分为无限制了,是不是AIX系统下还有其他地方限制?
求高手解答。另外,系统内存是绝对足够的,有32G之多呢:
C# code# lsattr -El mem0ent_mem_cap I/O memory entitlement in Kbytes Falsegoodsize 32768 Amount of usable physical memory in Mbytes Falsemem_exp_factor Memory expansion factor Falsesize 32768 Total amount of physical memory in Mbytes Falsevar_mem_weight Variable memory capacity weight False
[解决办法]还真没关注有这个限制
那lz看看你的环境中的限制参数 /etc/security/limits
[解决办法]AIX 这个限制和版本有关系,你可以试一下LDR_CNTRL环境变量,应该就能解决.
export LDR_CNTRL=MAXDATA=0x10000000 (上限512M)
LDR_CNTRL=MAXDATA=0x2000000 (上限768M)
LDR_CNTRL=MAXDATA=0x3000000 (上限1024M)
start_process
[解决办法]这是AIX32位的限制。若要使用超过236M内存。启用大
export LDR_CNTRL=0X200000(字节)
export MAXDATA=0x3000000
将上述环境变量加到你用C的用户profile中。
在AIX5.3以后的系统。可直接改为64位也可
[解决办法]直接通过HMC很容易分配的