我已经明白,在AIX上为64位应用程序设置-bmaxdata或LDR_CNTRL = MAXDATA ...只需要在进程的堆大小上设置 limit 。换句话说,没有必要像32位可执行文件那样提出任何限制。
在特定的AIX 7.1系统上,其中OBJECT_MODE=64 dump -ov my-executable
显示maxdata为0x00000000而LDR_CNTRL未设置,我必须将LDR_CNTRL = MAXDATA ...设置为2GB-ish数字我们在我们的旧版32位版本中设置为能够甚至初始化(initgroups()失败,pthread_create失败等)我的64位应用程序。
在64位进程中是否需要设置MAXDATA以便在堆大小上没有一些古老的256MB-ish上限?
# /usr/bin/ulimit -a
time(seconds) unlimited
file(blocks) 2097151
data(kbytes) 131072
stack(kbytes) 32768
memory(kbytes) 32768
coredump(blocks) 2097151
nofiles(descriptors) 2000
threads(per process) unlimited
processes(per user) unlimited
# OBJECT_MODE=64 dump -ov bin/httpd
bin/httpd:
***Object Module Header***
# Sections Symbol Ptr # Symbols Opt Hdr Len Flags
4 0x000c78b0 8683 120 0x1002
Flags=( EXEC DYNLOAD DEP_SYSTEM )
Timestamp = "Oct 05 19:03:19 2015"
Magic = 0x1f7 (64-bit XCOFF)
***Optional Header***
Tsize Dsize Bsize Tstart Dstart
0x0007c66a 0x00009d06 0x00003c08 0x1000001f8 0x110000862
SNloader SNentry SNtext SNtoc SNdata
0x0004 0x0002 0x0001 0x0002 0x0002
TXTalign DATAalign TOC vstamp entry
0x0007 0x0003 0x1100091b8 0x0001 0x110003a70
maxSTACK maxDATA SNbss magic modtype
0x00000000 0x00000000 0x0003 0x010b 1L
答案 0 :(得分:1)
您的示例中的限制因素是ulimit'数据'值。如果设置为'无限制'你会观察到预期的输出。