Я не очень знаком с тем, как работает сборка мусора и что вызывает утечки памяти. Но я в тот момент, когда меня это беспокоит, и я хочу написать более эффективный код. Таким образом, у проекта, над которым я работаю, который является веб-приложением Asp.Net, есть экземпляр пользовательского DataCriteria, который создается при запуске сеанса в global.asax и затем сохраняется в переменной Session. Этот пользовательский DataCriteria - это то, что мы используем для связи с базой данных для методов CRUD.
Первый вопрос, скажем, у нас есть класс Person, и в этом классе Person есть поле DataCriteria, которое установлено в экземпляр переменной Session объекта DataCriteria. Поскольку экземпляр Person содержит ссылку на экземпляр DataCriteria, который не будет утилизирован до завершения сеанса, этот экземпляр Person будет в состоянии быть собранным. Или каждый экземпляр Личности не будет утилизирован до окончания этой Сессии.
Второй вопрос более общий, но тот же. По сути, мне интересно, сможет ли переменная, объявленная в методе, который ссылается на экземпляр переменной Session объекта DataCriteria, быть в состоянии собрать GC? Или он останется до конца сессии?
Я благодарю вас за все советы, которые вы можете дать мне здесь. И если вам известны какие-либо полезные материалы для понимания процесса сбора мусора и предотвращения утечек памяти, я бы тоже хотел о них узнать.