По поводу подсчёта ссылок - этот метод не годится для циклически ссылающихся объектов, а они неизбежно возникают.
По поводу других сборщиков - в Яве и Шарпе используются разные алгоритмы (поколения, маркирующе-копирующий сборщик в сочетании с поколениями, алгоритм "поезд" - это в Яве).
В последних поставках Явы присутсвует до пяти реализаций, из которых надо выбирать под конкретную задачу. В общем случае их параметры несбалансированы (т.е. на некоторых задачах проигрывают обычному Mark&Sweep). Причина, почему в Яве возникли поколения - только динамическое ООП. Каждый мелкий "чих" вроде передачи параметра в обёртке, типизированного сообщения и т.п. - это выделение в куче. Для такого рода мелких объектов и вводится первое поколение, в котором работает маркирующе-копирующий сборщик.
В КП/ББ количество мелких короткоживущих объектов мало, и первое поколение особого выигрыша не даст, скорее наоборот.
Неплохо про сборщики рассказывалось на
http://www.ibm.com/ru/. Поищите.