A non-displaced array, with
is non-nil, the array is made weak. If
, the array is made non-weak.
By default, arrays are non-weak, and they keep alive all the objects that are stored in them. A weak array may remove a pointer if the object that it points to is not pointed to from somewhere else. When a pointer is removed like this, it is replaced in array with
Pointers are replaced by
after a garbage collector (GC) operation that identifies that they can be replaced. This means that if the object that is pointed to has been promoted to a higher generation, a garbage collection of the higher generation is required to remove the pointer. Note that by default the system does not automatically GC the blocking generation or higher.
An array can be made weak at creation time using the
argument to make-array.
LispWorks User Guide and Reference Manual - 21 Dec 2011