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 vaiue 2.
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.