[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

In-Place GC is great!

I don't know how many of you have discovered Genera 8.0's In-Place GC,
but I just wanted to praise it in public.

For those of you who didn't read the release notes, In-Place GC is a
mark-sweep GC that Symbolics added in Genera 8.0.  You invoke it with
"Start GC :Immediately In-Place".  It's non-incremental, so no other
processes run (not even the wholine clock nor the network receiver).  It
takes about an hour and a half to run on a 3640 with 14MW of dynamic
space allocated.

You may be asking, "why would I want my machine to be hung for so long?"
The advantage of In-Place GC is that it uses relatively little memory.
The normal, dynamic GC uses a copying algorithm, and needs enough free
space for all the non-garbage in dynamic areas.  In-Place GC scans
dynamic memory to find all the garbage and non-garbage, and then just
compacts the dynamic areas by shifting the non-garbage down into the
memory that was being used by the garbage.

Why am I hyping this now, since 8.0 has been out for quite some time?
Because today my Lispm warned me that I had only 543,000 words of
address space left and that I probably crash soon.  But I didn't crash,
and now I have 4.8MW of free dynamic space, because I started up an
in-place GC and went away to do some offline work.

Of course, I can't heap all this praise on Symbolics without at least a
small gripe: I want a Zmail command to make it forget all the "sent
drafts"; my Lispm has been up for over nine weeks and has about 550 sent
messages wasting virtual memory (I'm guessing about 2MW) and slowing
down the [Continue / Sent drafts] command (it takes time to turn 550
objects into a menu).