On Thu, Feb 12, 2004 at 09:24:28AM +0100, Kjetil Svalastog Matheussen wrote:
I don't
know about other garbage-collected languages, but
there is no way to temporarily disable GC in Python,
nor any way to force it to run at a particular time.
Yes, but python have a reference-count garbage collector, so
the problem shouldn't matter for python.
note that reference counting behavior doesn't differ that
much from a sweeping gc: as soon as a count to a large
object tree drops to zero the whole tree will be freed
instantly, causing an indeterminate delay in execution,
unless you defer free operations until there is time to
perform them. additionally, AFAIK python uses malloc/free
for memory management, which are inherently non-realtime.
i'm not sure if turning off gc is a real solution for (long
running) musical applications. why'd you have a gc in the
first place? when do you turn it back on? what about
applications that constantly create many small objects?
realtime gc algorithms OTOH have been around for some time
(baker's initial treadmill paper is from '78) and can even
deliver hard realtime 'performance'. nothing's for free,
though: they usually impose more restrictions on a language
runtime, e.g. WRT foreign language interfaces, and probably
suffer from internal fragmentation more than other
(compacting) algorithms.
<sk>