2.4.3 Controlling the stack sizes
As of version 7.7.14 the stacks are no longer limited individually. Instead, only the combined size is limited. Note that 32 bit systems still pose a 128Mb limit. See section 2.20.1. The combined limit is by default 1Gb on 64 bit machines and 512Mb on 32 bit machines.
For example, to limit the stacks to 32Gb use the command below. Note
that the stack limits apply per thread. Individual threads may
be controlled using the stack_limit(+Bytes)
option of
thread_create. Any thread can call set_prolog_flag(stack_limit,
Limit)
(see
stack_limit) to
adjust the stack limit. This limit is inherited by threads created from
this thread.
$ swipl --stack-limit=32g
- --stack-limit=size[bkmg]
- Limit the combined size of the Prolog stacks to the indicated size. The suffix specifies the value as bytes, Kbytes, Mbytes or Gbytes.
- --table-space=size[bkmg]
- Limit for the table space. This is where tries holding memoized11The letter M is used because the T was already in use. It is a memnonic for Memoizing. answers for tabling are stored. The default is 1Gb on 64 bit machines and 512Mb on 32 bit machines. See the Prolog flag table_space.
- --shared-table-space=size[bkmg]
- Limit for the table space for shared tables. See section 7.9.