[gclist] Fast-allocating non-copying GC's

David Ungar David.Ungar@Eng.Sun.COM
Thu, 14 Mar 1996 17:43:17 -0800


Carrying on the ST/C/assumption thread from David Chase:

David mentioned that non-copying (or non-moving) GC
works better with non-cooperative code and also makes certain
useful optimizations possible.

It does work better with non-cooperative code, and the
importance of that does vary a bit between C and Smalltalk (& Self) systems.
On the other point, all the Smalltalk systems I know of restrict GC
to certain points of execution, so that in between, the same
optimizations can be used. I suspect that most of the benefit of
these optimizations is still obtained, since the GC-free region
(typicall between calls) seems to be big enough.

Dave's note about ST systems having long-running images as a difference
w.r.t. C and Modula programs is quite true!
I think that PPS Smalltalk can trace its image back to 1976!
But seriously folks, ST'ers run for hours without doing a global
collection/compaction sometimes.

BTW, I tried a "customizing allocator" (aka multiple free lists)
in the first version of Berkeley Smalltalk.
My experience with it was so different from Paul and David Chase's that
I think context (e.g. St vs. C, interactive vs. real-time)
must play a very important role.
And many of the Lispers have different experiences still.

-- Dave