Базовая стратегия c, используемая для сбора мусора, заключается в определении того, доступны ли данные в куче из стека. Если это не так, освободите его память.
Вы можете визуализировать это так:
STACK *** HEAP *** HEAP *** STACK
GC root. -> A -> b -> GC root
Итак, если вы удалите A, у вас все еще будет B, достигающий стека, но сборщик мусора никогда не достигнет B и удалит его (он перемещается только слева направо на право / из стека в кучу). Неважно, что стек может быть достигнут из кучи в вашем примере B -> root G C. Только то, что данные кучи не могут быть получены из стека.