[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
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).