GC performance - was Re: [gclist] GC topics

boehm.PARC@xerox.com boehm.PARC@xerox.com
Wed, 21 Feb 1996 13:02:00 PST


"> We can allocate leaf objects. These land in separate pages from
> non leaf objects. This makes scanning much faster. In generating
> for YAFL you can tell leaf objects from non leaf objects and
> generate the proper malloc.
>
It sounds interesting, but I do not really understand where it
fits. It is true that since I can decide statically whether a
class has leafs or not, I can allocate leaf objects separately from
other objects pretty easily."

Separating non-pointer-containing objects is crucial for a nonmoving collector
running in limited physical memory.  The collector does not need to see pages
containing such objects.  In many environments they constitute the large
majority of all allocated memory.  Thus this can greatly reduce the collector's
VM footprint.  I don't know how to get the same benefit in a compacting or
copying collector.

In a conservative collector, it also saves you the scanning time for the
objects.  Completely pointer-free objects seem to be the one case where the
benefit is quite noticable.  It saves an appreciable number of instructions and
traffic to the cache.  Supplying pointer information for "mixed" objects adds
interpretation overhead and often won't reduce the cache traffic.

Hans

Standard disclaimer ...