On Thu, Jan 02, 2003 at 08:12:45PM +0100, Leopold Toetsch wrote: > Angel Faus wrote: > > > > >What about refcounting + real GC? > > > As soon as you start to refcount objects, which need active destroying, > you end up refcounting all objects (a timer may be stored in an > aggregate, passed to subs, may have references, ...).
Well, I thought that you only needed to refcount anything (and everything) that currently contains an object that needs active destroying (where references, subs and anything else that holds a reference counts as "containing", because I can't think of a better word) Effectively everything currently holding an object needing active destruction becomes an object needing active destruction, (for the duration, but no longer), and so on all the way back up to the root set. Whether in practical terms this turns out to mean virtually everything anyway, I don't know. > So this is not an option, except changing everything to refcounting, > > which is a PITA. Quite. We're not guaranteeing perfection, though, are we? Just better than perl5? [ie things wanting timely destruction get their destructor called at the correct time, unless you've been silly enough to send them off into a refcount loop. In which case they will get spotted at some point probably before program exit, compared with perl5 which only spots them if your program exits] Nicholas Clark