NextPrevUpTopContentsIndex

10.4.2 Segments and Allocation Types

Some GC interface functions take an allocation type as an argument, which is one of the keywords below. There are two categories of allocation type.

The main allocation types, which can be used as the what argument to the function sys:apply-with-allocation-in-gen-num , are:

:cons

The segment contains only conses.

:symbol

The segment contains only symbols (and does not include symbol names or any of the other properties of symbols).

:function

The segment contains only function objects.

:non-pointer

The segment contains only objects that do not contain pointers (strings, specialized numeric arrays, double-floats).

:other

The segment contain other objects, that is any object that contain pointers, and is not a symbol, cons or a function.

The derived allocation types are:

:mixed

The segment contains a mixture of :other , :function and :symbol , but not :cons or :non-pointer .

:cons-static

The segment contains cons objects that are static.

:non-pointer-static

The segment contains objects that do not contain pointers and are static (currently stacks are also allocated in these segments).

:mixed-static

The segment contains a mixture like :mixed, but static.

:weak

The segment contains weak objects (arrays, and internals of weak hash tables).

:other-big

The segment contains a single very large simple vector. The vector is static.

:non-pointer-big

The segment contains a single very large non-pointer object (a string or a specialized numeric array). The vector is static.

Segments of allocation type :other-big or :non-pointer-big can be as large as required to hold their object.

For all other allocation types, the size of each single segment is restricted. The implementation limit is currently 256MB, and you can specify a smaller limit using sys:set-maximum-segment-size .


LispWorks User Guide - 21 Jul 2006

NextPrevUpTopContentsIndex