On Wed, 22 Jul 2009, Hans Aberg wrote:
But if you you one which is tested and can guarantee no delays in the programming threads, let's hear.
Supercollider uses a real-time incremental garbage collector based on this paper: Paul R. Wilson, Uniprocessor Garbage Collection Techniques, Proceedings of the 1992 International Workshop on Memory Management, Springer-Verlag, Berlin, 1992. ftp://ftp.cs.utexas.edu/pub/garbage/gcsurvey.ps Wilson's method doesn't have to run in a separate thread (so no thread locking), the work done per allocation is strictly bounded (i.e. it's guaranteed that there are no long garbage-collection pauses during allocation), and the overhead per heap access is likewise constant (and tiny.) There have been advances in the state of the art since 1992, but this method works fine for high-throughput systems like Supercollider, and is certainly adequate for low-latency, low-performance systems like ChucK. -- Tom Duff. Electrically engraved with the world's finest entertainment.