Slate also had a non-moving mark-sweep style allocator for its initial bootstrap for simplicity reasons. We then went for mark-sweep-compact with object pinning (which does keep an object in-place) for those on the root stack - even then it'll not be the final form of the memory-management subsystem. Both GC's are polymorphic and easily-swapped, but we haven't maintained the former. It could be revived for comparisons, possibly. In any case, you won't find terribly good locality figures unless you create a modified memory manager which moves objects around at least some of the time.
Unfortunately, C-based allocators have further restrictions beyond that mentioned that may cloud any lessons learned for others. See the essential book on the topic _Garbage Collection_. But Boehm is definite a man to ask.
On Jan 13, 2005, at 7:14 AM, Ned Konz wrote:
On Wednesday 12 January 2005 11:09 pm, Dan Ingalls wrote:
Partial credit: If you have real experience with a Squeak-like system that worked this way, give some report on the fragmentation behavior experienced. References to papers with practical results in the area would also be of
interest.
Tell Ian to ask Hans Boehm. He's at HP Labs, building 3. And he's an expert in the topic. He's the author of a popular GC library for C programs; of course, it's much safer in C programs not to move things because it's sometimes hard to tell what's a pointer.
His slide show: http://www.hpl.hp.com/personal/Hans_Boehm/gc/nonmoving/index.html
A description of techniques used in the Great Circle conservative GC library (which I believe is based on Hans Boehm's work): http://www.cs.purdue.edu/homes/grr/ISMM98-grr-mps-cef.pdf
Henry Bakers' "Treadmill" algorithm appeared in the ACM SIGPLAN Notices in 1992. I think it was used in a Lisp system. http://portal.acm.org/ft_gateway.cfm? id=130862&type=pdf&coll=ACM&dl=ACM&CFID=36433663&CFTOKEN=40514639
I believe that Smalltalk/MT's GC (which is done in a separate thread and so can be paused and resumed) is a non-moving scheme. They play well with external libraries, in part because they don't move objects.
-- Ned Konz http://bike-nomad.com/squeak/
-- Brian T. Rice LOGOS Research and Development http://tunes.org/~water/