Re: Hybrid GC/explicit MMGs?

"Michael Hicks" <[email protected]> Wed, 30 Jun 2004 07:05:35 -0400
Newsgroups gmane.comp.programming.garbage-collection.general
Message-ID <002001c45e92$2b7d13b0$6401a8c0@hicks>
The Boehm-Demers-Weiser (BDW) conservative collector permits you to
manually free objects using GC_free().  Thus, you have the choice to
either let the GC get it, or to do it yourself.  Of course, if you start
freeing things manually without any enforced discipline, you open
yourself to the possibility of a dangling pointer, so the safety
guarantee of GC goes out the window.

In Cyclone, a C-like but type-safe language, we use static analysis in
the compiler to ensure that uses of GC_free will not lead to a dangling
pointer.  We have found that reducing the frequency of GC by using
manual deallocation can have a significant benefit on memory
consumption, but very often there is no benefit to elapsed time.  We
have a paper describing our system and some of our experience; if you're
interested you can see a preprint at
http://www.cs.umd.edu/~mwh/papers/hicks04experience.html.  Any comments
on this work are most welcome.

Mike

-----Original Message-----
From: [email protected] [mailto:[email protected]]
On Behalf Of Florian Liekweg
Sent: Wednesday, June 30, 2004 6:16 AM
To: [email protected]
Subject: [gclist] Hybrid GC/explicit MMGs?

Hi,

the unpredictability of GC runs, be it real or percieved, got me
thinking about the possibility of hybrid system that allows
explicit freeing of ojbects (possibly prematurely so, with the
obvious consequences) and provides garbage collection.  Wouldn't
it be nice to say, "Now is a good time to clean up manually" ...

Besides the more obvious questions (given address 0xbfbff054, should
GC free it, or will the program free it?  Should GC take precedence?
Should explicit free'ing be in command?), I'm wondering whether two
such systems can even co-exist behind the same process (who gets to
do the next brk?  Is that my page or your page?)

Does anyone know about any system that has addressed (sic) this problem
or provides a similar approach?  Any thoughts why this may be possible,
impossible or possible-but-only-with-significant-overhead?

Note, if replies come in via PM, I'll post a summary.

Cheers,
Florian
--