[Mono-gc-list] My arguments

Fergus Henderson fjh@cs.mu.OZ.AU
Wed, 13 Aug 2003 15:44:29 +1000

On 12-Aug-2003, David Jeske <jeske@chat.net> wrote:
> When I'm writing a piece of useful interactive software (web-server,
> client application), I will happily give up 30-50% of my CPU if I have
> to, but I cannot accept uncontrolled pauses.
> Therefore, the collector must either be incremental (tri-color,
> reference counted, etc..) or fully concurrent with the application.
> If we're not going to achieve that, we might as well just keep using
> libgc.

I don't agree.  For many applications we ought to be able to get
significantly better performance than libgc using a good copying or
mark/compact garbage collector.  Also, there are advantages to using a
type-accurate collector rather than a conservative collector (e.g. more
predictable memory usage) which are desirable for some applications.
So type-accurate copying or compacting collection is desirable even
if it is not incremental.

Furthermore, for non-interactive applications, incrementality is
not useful, and adding incrementality probably requires trading off
performance, which is undesirable.  So in fact for these applications
incremental collection is not just unnecessary, it is postively harmful.

Of course you are right that some other applications need incremental
collection.  Different applications have different needs that can only
be satisfied by different garbage collectors.  So the long-term plan
should be to have several different garbage collectors, or at least
several different GC strategies, and to provide application developers
with some way of giving hints to the runtime about which GC to use.

In the short to medium term, I think implementing a type-accurate
collector and integrating it with the rest of the Mono implementation
is already a complex task, so I think we should start off simple,
e.g. with a straight-forward copying collector, and then worry about
extending it to support generational collection, and only then worry
about an incremental collector.  However, we should of course keep in
mind while developing this the long-term goal of having support for
multiple different collectors or collection strategies including at
least one incremental collector.

Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.