专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > AIX

AIX上进程内存分配有关问题,无法分配超过256M的内存

发布时间:2011-06-27 19:05:48 文章来源:www.iduyao.cn 采编人员:星星草
【求助】AIX下进程内存分配问题,无法分配超过256M的内存
在启动一个进程时,分配256M内存时提示
C# code
malloc:Not Enough Space

根据提示,我理解是系统对用户内存分配限制问题,因此修改ulimit,内存相关全部修改为ulimited:
C# code
# ulimit -a
time(seconds)        unlimited
file(blocks)         2097151
data(kbytes)         unlimited
stack(kbytes)        unlimited
memory(kbytes)       unlimited
coredump(blocks)     2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user)  unlimited

然后执行分配256M内存时程序正常启动,但是当我关闭程序重启,并设置分配288M内存时,又出现相同错误。
问题是我已经显式设置ulimit中内存分配的部分为无限制了,是不是AIX系统下还有其他地方限制?
求高手解答。另外,系统内存是绝对足够的,有32G之多呢:
C# code
# lsattr -El mem0
ent_mem_cap          I/O memory entitlement in Kbytes           False
goodsize       32768 Amount of usable physical memory in Mbytes False
mem_exp_factor       Memory expansion factor                    False
size           32768 Total amount of physical memory in Mbytes  False
var_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很容易分配的
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: