Если моя ссылка на obj1 выходит за рамки, а моя ссылка на obj2 - нет, является ли obj1 все еще пригодным для сборки мусора, или есть некоторые проблемы с зависимостями, потому что есть ссылка на объект List?
Если я вас правильно понимаю, вы имеете в виду obj1
и obj2
типа List<string>
и оба указывают на один и тот же List<string>
экземпляр.
Когда obj1
выходит из области видимости, все равно будет obj2
в качестве активной ссылки на экземпляр List<string>
, поэтому список не может быть собран мусором.
Если obj1 был частьюссылочный тип в куче (т. е. одно из его свойств) занимаемой им памяти может быть собранным как часть внешнего объекта.Если это была просто ссылка на стек, GC не будет задействован, поскольку стек будет просто разматываться в конце вызова метода, когда obj1 выпадает из области видимости.
Имейте в виду, что obj1 - это простоссылка (в некотором смысле, указатель) на объект в куче - этот объект можно собирать мусором, только когда на него больше нет ссылок.