[gclist] trigger minor or major (generational) gc?

STARYNKEVITCH Basile Basile.Starynkevitch@cea.fr
Tue, 29 Jun 1999 15:58:41 +0200 (MET DST)


Hello All,

I've coded (using litterate programming) a precise garbage collector
for and in (simple) C++ (single-threaded, Posix). I need a precise
collector since the application (some kind of static code analysis)
would use floating numbers and pointers. My GC is expected to be
rather general (in the sense that it is not application specific, and
could be used by other applications).

This is a (mostly) generational moving garbage collector. So I have a
birth region (where all allocations occur), a young generation, and an
old generation.

The minor GC is called when the birth region is full. It forwrd live
objects into the young generation (a set of young regions, each
typically about half a megabyte or more). It also scans the changed
object vector (I have a write barrier).

The middle GC also condemns some (the older half) the the young
regions, forwarding objects in them into the old generation.

The major GC scans everything.

My question is when triggering a minor, middle, or major GC. The
obvious way would be to look at the size of young and old regions, and
ask for a middle GC if the young space grews by more than 2 regions,
and ask a major GC if the old space grew by more than 3 regions.

Does any one have some more powerful insight?

(perhaps choosing a minor, middle, or major GC might be application
specific; The application could explicitly ask for such a GC in some
critical points).

Thanks for reading.

N.B. Any opinions expressed here are only mine, and not of my organization.
N.B. Les opinions exprimees ici me sont personnelles et n engagent pas le CEA.

---------------------------------------------------------------------
Basile STARYNKEVITCH   ----  Commissariat  l Energie Atomique 
DTA/LETI/DEIN/SLA * CEA/Saclay b.528 (p111f) * 91191 GIF/YVETTE CEDEX * France
phone: 1,69.08.60.55; fax: 1.69.08.83.95 home: 1,46.65.45.53
email: Basile point Starynkevitch at cea point fr