プロセスの最大データサイズなどを拡大してあげたい場合はシェルでこの制限を緩和させることができる。たとえばcsh系のシェルならばlimitコマンドを使う。

limit datasize unlimited
limit stacksize unlimited

こんな記述を.cshrcにしておけば安心。

ただし、FreeBSDの場合はこのままではunlimitedにはならない。上記指定をした後、limit -hで確認すると、

cputime         unlimited
filesize        unlimited
datasize        524288 kbytes
stacksize       65536 kbytes
coredumpsize    unlimited
memoryuse       unlimited
vmemoryuse      unlimited
descriptors     14745
memorylocked    unlimited
maxproc         5547
sbsize  unlimited

unlimitedではなく、具体的な値が指定されているのがわかる。

この値はカーネルで指定されている上限値で、これの値以上のメモリをプロセスに割り当て可能にするには、これらの値を変更した上でカーネルを再構築し、再起動する必要がある(もちろん、割り当ての制限を少なくしたい場合も)。

options         MAXDSIZ="(1024*1024*1024)"
options         MAXSSIZ="(1024*1024*1024)"
options         DFLDSIZ="(1024*1024*1024)"

4.5R以降では以下の変数を/boot/loader.confで指定することもできるようだ。

kern.maxdsiz
kern.dfldsiz
kern.maxssiz
4.5Rリリースノートより

The kernel configuration parameters MAXTSIZ, DFLDSIZ, MAXDSIZ, DFLSSIZ, MAXSSIZ, and SGROWSIZ are all loader tunables (kern.maxtsiz, kern.maxdfldsiz, etc.).