Java использует не только простой сборщик мусора с подсчетом ссылок.
Когда JVM выполняет полный прогон GC, он обходит весь граф объектов, отмечая каждый найденный элемент. Любые предметы, которые не отмечены, подлежат очистке.
Поскольку ни a
, ни b
недоступны из вашего основного кода, они не будут помечены и, следовательно, могут быть удалены.