Interned symbols (and their symbol names), and packages, are treated in a special way, because they are assumed to have a long life. They are allocated in the generation specified by the variable
*symbol-alloc-gen-num*
, which has the initial value 2 in 32-bit LispWorks and 3 in 64-bit LispWorks.
Symbols created with
make-symbol
or
gensym
start out in generation 0.
Symbols will be garbage collected if they are no longer accessible (regardless of property lists) but note that in 32-bit LispWorks, if the symbols are in generation 2 then you might need to invoke
mark-and-sweep
explicitly to collect them in a timely manner.