Not knowing anything much about memory management, would it be possible to have a sort of mixed ref count/garbage collection system where you only use the gc stuff as a last resort? My thought is that it would be useful to use gc to find and reclaim circular garbage.
That's *sorta* what Perl does, 'though you can still be bitten by circular refs in a long-running process. Err, long-running thread. You see, Perl has a mark-and-sweep garbage collector which is run only on thread shutdown.