>>>>> "rif" == rif <[EMAIL PROTECTED]> writes:
rif> It seems that if I unintern a symbol without first setting its value
rif> to nil, the value is never GC'd. For example, in a fresh CMUCL
rif> post-18e (2003-08-15), with a first gc to flush garbage from
rif> initialization/startup:
rif> (gc :full t)
rif> ; [GC threshold exceeded with 27,760,320 bytes in use. Commencing GC.]
rif> ; [GC completed with 5,547,208 bytes retained and 22,213,112 bytes freed.]
rif> ; [GC will next occur when at least 133,547,208 bytes are in use.]
rif> NIL
rif> * (defparameter *a* (random-df-vec 5000000))
rif> *A*
rif> * (unintern '*a*)
rif> T
[snip]
rif> etc. I can gc a large number of times, but the vector is not
rif> collected. This is not a huge practical problem, because if I setf
rif> *a* to nil before uninterning, the collection happens, but I am
rif> curious as to how the large vector could still be accessible.
This doesn't go away because it's held in a cmucl-internal INFO
database that holds information about all kinds of things like
function and variable types. (Thanks to Christophe Rhodes and Bill
Newman for explaining this to me.)
Ray