LinqToSql DataContext кэш и использование памяти - PullRequest
2 голосов
/ 02 февраля 2012

Мне было интересно, использует ли кэш LINQ to SQL DataContext WeakReference или подобную систему, чтобы избежать использования слишком большого количества памяти после нескольких запросов?

Зависит ли это поведение от свойства ObjectTrackingEnabled?

1 Ответ

2 голосов
/ 02 февраля 2012

Нет;он использует регулярные ссылки, потому что обычно ему нужно держать объекты для отслеживания изменений (как вы упоминаете), а также для работы менеджера идентификации.Вы должны только кратко использовать экземпляр DataContext как единицу работы.Потому что в противном случае издержки отслеживателя изменений / менеджера идентичности скоро сделают контекст данных полностью раздутым и непригодным для использования (слишком медленным).просто кратко используйте контекст данных, и пусть объекты будут собраны после завершения вашей операции.Не держите контекст данных произвольно.

Иногда вам вообще не нужен контекст данных;для приложений с преобладанием чтения существуют альтернативные, но похожие механизмы запросов.

...