[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Garbage Collection
- From: Roberto Ierusalimschy <roberto@...>
- Date: Wed, 30 Oct 2002 09:51:08 -0300
> "Lins's algorithm is lazy in the sense that the mark-sweep garbage
> collection is performed on demand. [...big snip...] Like
> generational garbage collection, Lins's method works best when
> side-effects are comparatively rare, for example for programs written
> in a functional style. Its success also rests on the assumptions that
> the great majority of nodes are uniquely referenced and can be
> reclaimed without resort to garbage collection; and that the
> sub-graphs traversed are sufficiently small to make the garbage
> collection delay small.
Most of these are not true in Lua: most programs use mainly side-effects
to do their jobs, and many nodes have more than one reference (because a
single assignment or parameter passing duplicates the reference). Maybe
that's why I forgot about it ;-)
In a related subject: I don't want to go into the merits of reference
counting x games, but I feel that a correct implementation of reference
counting in Lua is not going to be simple. For instance, everytime Lua
pops its stack (a simple "L->top--", for instance) it is destroying
references. The stack is pervasive in Lua's implementation, and to
control correctly all these pushs and pops seems a difficult task. (More
difficult yet if there is any concern with performance...)
-- Roberto