Coalescing reference counting [0] avoids almost all synchronisation. n.b. The abstract says they do "not require any synchronized operation in its write barrier" but they rely on a micro-architectural hack; in practice I'd expect one atomic test-and-set per modified object per collection.
[0] https://sites.cs.ucsb.edu/~ckrintz/racelab/gc/papers/levanon...