[gclist] Two conservative collectors

Charles Fiterman cef@geodesic.com
Thu, 18 Nov 1999 10:42:26 -0600

At 10:32 AM 11/18/99 -0600, you wrote:
>Since both the Boehm and Geodesic collectors are conservative, there
>is the possibility, however remote, that "false pointers" will cause
>garbage to be retained. (I'm basing this conclusion on section titled
>"Problems of conservative garbage collection" on p. 235 [JL96].)

In most programs retention due to false pointers is O(n) where O is small
typically zero. But there are programs that behave disasterously under
conservative collection. Typically these have large objects like bitmaps or
double precision arrays that are white noise to conservative collectors and
which contain a lot of false pointers. 

We encourage programmers to identify these objects and allocate them with
gcMallocLeaf telling the collector the objects have no pointers. Of all
adjustments the user can make to improve performance under conservative
collection non approaches proper use of gcMallocLeaf because all leaf
objects take zero time to scan and need not be cleared to prevent false
pointers. Also they are kept on separate pages to avoid even touching the
pages they live on in a collect.

If you require the collection of all objects for finalizers etc.
conservative collection is not for you.

>How can a programmer detect whether this is happening in his program
>and how easy is it to correct?  Also, if a programmer can precisely
>identify the "internal" pointers, (as done in [DE92] with the "RC
>Maps"), once at the beginning of the program (i.e. before the 1st
>statement of main), then how could each of these collectors take
>advantage of that information?

In the Geodesic collector there are libraries that read debug information
from running programs and give elaborite reports on what is leaked and what
is kept. We need to improve these reports for better information on why
things are kept and not simply what is kept but are doing so.

Charles Fiterman		  Geodesic Systems
414 North Orleans Suite 410	  Phone 312 832 2015
Chicago IL 60610-4418           FAX   312 832 1230

When a language gets templates in any form it is 
commercially dead. Languages born with templates
are born dead.