Почему сборщик мусора не может понять, когда объекты, ссылающиеся друг на друга, действительно осиротели?

Я понимаю, что в управляемом языке, таком как Java или C #, существует такая вещь, называемая сборщиком мусора, которая время от времени проверяет наличие каких-либо экземпляров объекта, на которые больше не ссылаются, и, таким образом, они полностью осиротели, а затем очищаются. памяти. Но если на два объекта не ссылаются никакие переменные в программе, а ссылаются друг на друга (например, на подписку на событие), сборщик мусора увидит эту ссылку и не очистит объекты из памяти.

Почему это? Почему можноt сборщик мусора выясняет, что ни один из объектов не может быть ссылкой на какую-либо активную часть работающей программы, и удаляет их.

Ответы на вопрос(5)

Ваш ответ на вопрос