Skip to main content
Sapphire: Copying GC Without Stopping theWorld
Concurrency and Computation: Practice and Experience (2003)
  • Eliot B. Moss

The growing use in concurrent systems of languages that require garbage collection (GC), such as Java, is raising practical interest in concurrent GC. Sapphire is a new algorithm for concurrent copying GC for Java. It stresses minimizing the amount of time any given application thread may need to block to support the collector. In particular, Sapphire is intended to work well in the presence of a large number of application threads, on small- to medium-scale shared memory multiprocessors. Sapphire extends previous concurrent copying algorithms, and is most closely related to replicating copying collection, a GC technique in which application threads observe and update primarily the old copies of objects. The key innovations of Sapphire are: (1) the ability to flip one thread at a time (changing the thread's view from the old copies of objects to the new copies), as opposed to needing to stop all threads and flip them at the same time; (2) exploiting Java semantics and assuming any data races occur on volatile fields, to avoid a barrier on reads of non-volatile fields; and (3) working in concert with virtually any underlying (non-concurrent) copying collection algorithm. Copyright © 2003 John Wiley & Sons, Ltd.

  • garbage collection,
  • copying garbage collection,
  • concurrent garbage collection,
  • replicating garbage collection,
  • Java garbage collection
Publication Date
Citation Information
Eliot B. Moss. "Sapphire: Copying GC Without Stopping theWorld" Concurrency and Computation: Practice and Experience Vol. 15 Iss. 3-5 (2003)
Available at: