www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - GC again

reply "Craig Black" <cblack ara.com> writes:
Coming from a C++ background, I don't know a lot about GC.  Today I was 
looking at the new features in Mono .NET 1.2.  They use a Boehm GC link D's. 
But in 1.2, it was improved.   Here's the quote:

Garbage Collector: We now use Boehm GC in precise mode as opposed to fully 
conservative mode. We also use it with a precise set of GC roots which 
greatly improved Garbage Collection performance.

What does this mean and how hard would it be for D to do this as opposed to 
doing a full generational GC?  Maybe we could do this as a short term 
improvement while we wait for a generational GC in the long term.

-Craig 
Nov 27 2006
parent reply "Frank Benoit (keinfarbton)" <benoit tionex.removethispart.de> writes:
 Garbage Collector: We now use Boehm GC in precise mode as opposed to fully 
 conservative mode. We also use it with a precise set of GC roots which 
 greatly improved Garbage Collection performance.

The explanation on wikipedia are a good starting point http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29
 What does this mean and how hard would it be for D to do this as opposed to 
 doing a full generational GC?  Maybe we could do this as a short term 
 improvement while we wait for a generational GC in the long term.

At the moment the GC has no information, what values in memory are of pointer type, and which one are not. So he takes them all as pointers. This means conservative (vs. precise). To do a precise GC, this information must be available and that will need support in the compiler. To be precise is a precondition for a generational GC.
Nov 27 2006
parent "Craig Black" <cblack ara.com> writes:
"Frank Benoit (keinfarbton)" <benoit tionex.removethispart.de> wrote in 
message news:ekfj8p$v0o$1 digitaldaemon.com...
 Garbage Collector: We now use Boehm GC in precise mode as opposed to 
 fully
 conservative mode. We also use it with a precise set of GC roots which
 greatly improved Garbage Collection performance.

The explanation on wikipedia are a good starting point http://en.wikipedia.org/wiki/Garbage_collection_%28computer_science%29
 What does this mean and how hard would it be for D to do this as opposed 
 to
 doing a full generational GC?  Maybe we could do this as a short term
 improvement while we wait for a generational GC in the long term.

At the moment the GC has no information, what values in memory are of pointer type, and which one are not. So he takes them all as pointers. This means conservative (vs. precise). To do a precise GC, this information must be available and that will need support in the compiler. To be precise is a precondition for a generational GC.

I was thinking something along those lines. Thanks for clearing it up for me. -Craig
Nov 28 2006