-nogc

Leandro Lucarella llucax at gmail.com
Thu Apr 23 11:12:34 PDT 2009


Andrei Alexandrescu, el 23 de abril a las 12:48 me escribiste:
> Brad Roberts wrote:
> >Leandro Lucarella wrote:
> >>Now in Tango/Druntime you already can use a dummy GC that all it does is
> >>calling C malloc/free for gc_malloc/gc_free, exactly for this purpose, so
> >>what -nogc should do in that case is just link against the "stub" GC
> >>instead to the "basic".
> >This claim really needs to stop.  You can't just swap from the normal gc
> >to the stub gc an expect your app to use malloc/free and behave exactly
> >as it did before.  No, it'll leak.  Free will never be called (outside
> >the rare case of an explicit delete).  Normal apps expect implicit
> >cleanup to be invoked by the gc which will never happen in the stub.
> >That's fine in tiny apps, or apps that carefully manage their own
> >memory, but then you weren't using the gc in the first place for those apps.
> 
> Totally agreed. I've always wondered what the purpose of the stub GC was in 
> druntime. "We can implement an appallingly crappy allocation model" is the only 
> message I'm getting.
> 
> Andrei

>From the stub GC documentation:

	This module contains a minimal garbage collector implementation
	according to published requirements. This library is mostly
	intended to serve as an example, but it is usable in applications
	which do not rely on a garbage collector to clean up memory (ie.
	when dynamic array resizing is not used, and all memory allocated
	with 'new' is freed deterministically with 'delete').

I think being an example is just a good enough reason (it was useful for
me at least). The other use you may like it or not, but is there.

And may I ask what it would happen if I do this with your "-nogc"
proposal?

class A
{
	B b;
}

class B
{
	A a;
}

A a = new A;
a.b = new B;
a.b.a = a;

? Wont this leak? Are you planning to make a backup tracing collector to
fix cycles maybe? Because I don't think using a naive reference counting
will avoid leaks as easy as you put it...

RC is not *that* simple.

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------



More information about the Digitalmars-d mailing list