[gclist] More questions for the FAQ

Paul R. Wilson wilson@cs.utexas.edu
Thu, 21 Mar 1996 09:59:43 -0600


>From majordom@iecc.com Thu Mar 21 05:53:32 1996
>Subject: Re: [gclist] More questions for the FAQ
>Precedence: bulk
>Reply-To: gclist@iecc.com
>Errors-to: owner-gclist@iecc.com
>
> || Date: Wed, 20 Mar 96 13:05:19 EST
> || From: David Chase <chase@centerline.com>
> || 
> || Q: What are some successful products or projects which make use of 
> ||    garbage collection?
>
>The O2 object-oriented database has an off-line garbage collector.  (It's a
>successful commercial product.)  Other object-oriented databases have too, but
>I don't know the names off-hand.  Those that don't, should.  Garbage
>collection is central to the notion of persistence.  This was shown by
>Atkinson as early as 1983.
>
>                                                Marc
>

I think it's interesting, for FAQ purposes, that relational database
systems do this too, as Henry pointed out.

I recently talked to a database expert about implementing B+ trees.
(We recently added them to the Texas persistent store.)  I was not clear
on exactly how to implement the delete operation, and the rebalancing
necessary to make it work.  I didn't want to go to a lot of trouble.

He said that real database implementors usually don't do it at all.
When an item is deleted from a relation, it's simply marked "deleted"
with a flag in the table.  I guess that eventually you compact the
database by what they call reorganzation, i.e., writing out the live
elements of the tables to a file, and reading the whole schmear back
in, clean.

I'm not sure how this relates to GC---it's an issue of compaction and
allocation rather than tracing for liveness.  But I believe Henry
is correct---many RDB's do in fact do "garbage collection" by writing
things out to a file and reading in a clean version.

I think this is extremely common---people use pickling and unpickling
as a slow form of copying garbage collection.  Often they use hand-hacked
picklers for their particular applications' data structures.