ну вообще-то подсчет ссылок дорогая операция, поэтому сборщик работает по другому:1. имеется набор объектов которые доступны всегда + константные объекты, это все называется Root Set
2. на паузе (stop the world) проверяется на какие объекты ссылаются объекты из этого набора
3. проходим так нужное количество итераций, до тех пор пока не дойдем до объектов которые ни на кого не ссылаются
4. все объекты которые мы не пометили попадают под сборку
Так же данный метод избавлен от главного недостатка метода с подсчетом ссылок: кольцевые зависимости (А ссылается на Б, Б ссылается на А)
По поводу диструптора:
1. магия не только в кольцевом буфере (смотрим доклад с недавнего JavaDay в питере), обычную очередь можно разогнать до сопоставимых результатов
2. да, парковка дорогая операция, поэтому они жгут циклы процессора, лишь бы не останавливаться
3. дополнительная магия их скорости в том что пауз на сборке у них просто нету, так как используют Azule (далеко не у всех такие деньги будут)