У меня есть метод, который читает некоторые значения из БД, а затем выдает словарь - может быть много тысяч раз.
public IEnumerable<Dictionary<string, MyClass>> GetValues()
{
var results = new Dictionary<string, MyClass>();
// ... fill data from data reader
yield return results;
}
Потребитель этого метода перебирает только результат и использует словарь в манера чтения Итак ... что касается сбора мусора и непрерывности памяти: есть ли смысл делать что-то подобное?
private Dictionary<string, MyClass> _resultHolder = new Dictionary<string, MyClass>();
public IEnumerable<ReadOnlyDictionary<string, MyClass>> GetValues()
{
// Don't want the previous record values, so clear
_resultHolder.Clear();
// ... fill data from data reader
yield return _resultHolder;
}
Насколько я помню, существуют разные уровни для сборщика мусора ... Так что будет этот результат в конечном итоге только в конечном итоге на уровне 0 и, следовательно, не вызывает никаких проблем в отношении фрагментации памяти? Будет ли такой вид объединения объектов преждевременной оптимизацией?