[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Avoiding FFI- allocations + using SSE-vectors
- From: Douglas Creager <douglas@...>
- Date: Mon, 6 Feb 2012 21:45:48 -0500
> Other downsides to GC: you have to maintain a list of root objects
> and make sure that all roots are discoverable when the GC runs,
> most GC algorithms stop all threads and have practically unbounded
> latency for a full collection, GC can often require tuning for demanding
> IMO the worst drawback of refcounting by far is that by itself it
> cannot collect cyclic references.
Reference counting can count cycles, too. For instance, I'm using the algorithm in
 Bacon, DF and Rajan VT. “Concurrent cycle collection in reference counted systems”. Proc. ECOOP 2001. LNCS 2072. http://www.research.ibm.com/people/d/dfb/papers/Bacon01Concurrent.pdf
The garbage collection I'm working with doesn't need to be thread-safe, so I can use the simpler algorithm from §3 of that paper. It has to maintain roots, but only the roots of possible cycles when an object is decref-ed.
Then again, maybe there are enough additional functions in that algorithm that you've just bolted a tracing collector on to the reference counting collector...