Для любого приличного сборщика мусора (не только для разметки и подметания) достаточно отрезать соединение 1, чтобы освободить B (и C, и D, и окно). Распределение на основе подсчета ссылок не сможет освободить B и D из-за их циклических ссылок (B ссылок D и D ссылок B), но подсчет ссылок на самом деле не сборщик мусора.
Я думаю, можно с уверенностью предположить, что все браузеры используют приличный сборщик мусора (ну, с браузерами, на самом деле ничего не безопасно, но реализация JavaScript, не использующая надлежащий сборщик мусора, тем не менее невероятна).