Так нет, зачем GC? Просто контролируем указатели и на exit все ещё не освобождённые освобождаем. Это гораздо проще GC (по крайней мере тех, о которых я слышал) и можно настроить на нужное поведение.
Тут вопрос терминологии. Кто-то считает, что ARC - это GC, кто-то, что нет. Но суть от этого не меняется. Сделать ARC, с циклами, который работал бы лучше, чем G1 по-моему никому еще не удалось