Nonintrusive Cloning Garbage Collection with Stock Operating System Support
Gustavo Rodriguez-Rivera and Vince Russo
Software-Practice and Experience, Vol 27, No.8, August 1997
It is well accepted that automatic garbage collection simplifies programming,
promotes modularity, and reduces development effort.
However it is commonly believed that these advantages do not counteract the
perceived price: excessive overheads, possible long pause times while
garbage collections occur, and the need to modify existing code.
Even though there are publically available garbage collector implementations
that can be used in existing programs, they do not guarantee short pauses,
and some modification of the application using them is still required.
In this paper we describe a snapshot-at-beginning concurrent
garbage collector algorithm and its implementation.
This algorithm guarantees short pauses,
and can be easily implemented on stock UNIX-like operating systems.
Our results show that our collector performs comparable to other
garbage collection implementations on uniprocessor machines and outperforms
similar collectors on multiprocessor machines. We also show our collector
to be competitive in performance with explicit deallocation.
Our collector has the added advantage of being non-intrusive.
Using a dynamic linking technique and effective root set
inferencing, we have been able to successfully run
our collector even in commercial programs where only the binary
executable and no source code is available.
In this paper we describe our algorithm, its implementation,
and provide both an algorithmic and a performance comparison between
our collector and other similar garbage collectors.
Last modified: Tue Oct 28 16:07:01 EST 1997