Objects that cannot be moved are allocated in special segments, called static segments. These can be in any generation, but are in generation 2 by default.
:static
. This is the preferred way to allocate a static array.
in-static-area
or by use of
switch-static-allocation
.
link-load:read-foreign-modules
. This applies to LispWorks for UNIX only (not LispWorks for Linux, x86/x64 Solaris, FreeBSD or Macintosh).
malloc
,
realloc
and
memalign
in foreign code loaded as above.
Because static objects are not allowed to move, the static segments are not allowed to move. This implies that if there is a static segment in a high address the image size cannot be reduced below this size. Applications that use a lot of static area normally allocate additional static segments, and thus grow without being able to shrink again. This can be prevented by enlarging the initial static segment, which is in a low address. Use the function
enlarge-static
to increase the size of the initial static segment. (Use
(room t)
to find its current size.)
LispWorks User Guide and Reference Manual - 21 Dec 2011