[Mono-list] Garbage collector in incremental mode?

Tom Fransen t.fransen@mailned.nl
Thu, 10 Oct 2002 19:50:28 +0100


apart from the discussion about incremental GC. I have read very little
GC in Mono. On mailing discussing M$ .NET I read often about discussion on
the GC affects the performance of an application. Isn't this a hot topic in

How is that in Mono. I read some of the pages of Hans Boehm but is there
anything specific (like the incremental GC) about the use of the GC in
Mono. For example how does it perform in comparison to the M$.

Who can shed some light on this?


-----Original Message-----
From: mono-list-admin@ximian.com [mailto:mono-list-admin@ximian.com]On
Behalf Of Fergus Henderson
Sent: Thursday, October 10, 2002 11:59 AM
To: Holger Arnold
Cc: mono-list@ximian.com
Subject: Re: [Mono-list] Garbage collector in incremental mode?

On 09-Oct-2002, Holger Arnold <harnold@gmx.de> wrote:
> Does Mono still work with the Boehm garbage collector switched to
> mode? Is there a particular reason why this is not done by default?

Here is one possible reason:

 On Fri, 12 Jul 2002, in mail to gclist@lists.iecc.com, Hans Boehm wrote:
 | On a Linux system
 | (and on many others) turning on incremental collection will cause the
 | heap to be write protected.  The collector will handle the resulting
 | write faults, unless they occur inside a system call.  Thus you will
 | need to be careful with, and preferably avoid, system calls that write
 | directly to the garbage-collected heap.  (If the application is
 | single-threaded, or nearly single-threaded, you can also wrap the system
 | calls with some routines provided by the collector.  In some cases, it's
 | also OK to have system calls write to objects allocated with
 | GC_MALLOC_ATOMIC.  But this has turned out to be enough of an issue that
 | I believe there are relatively few clients for the incremental
 | collector.)

In other words, turning on incremental collection would require
carefully vetting the mono source code to make sure that there are no
calls to system calls that might write directly to memory allocated
with GC_malloc() and friends.  There might also be some nasty
interactions with the C interface (PlatformInvoke etc.)

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.

Mono-list maillist  -  Mono-list@ximian.com