У меня сложный алгоритм, который работает с 30+ ГБ памяти, и мне нужно оптимизировать его, потому что иногда я получаю исключение System.OutOfMemory.
Например, представьте себе такой код:
public void DoWork()
{
HashSet<MyStruct> hashSet = LoadALotOfStructs();
List<MyStruct> list = hashSet.ToList();
// Lot of code that can not use the hashSet anymore
}
Теперь, поскольку я больше никогда не буду использовать HashSet, я хочу сказать GC, чтобы он немедленно избавился от HashSet и освободил память.Итак, меня интересует это простое изменение:
public void DoWork()
{
List<MyStruct> list;
{ // just this
HashSet<MyStruct> hashSet = LoadALotOfStructs();
list = hashSet.ToList();
} // and this
// Lot of code that can not use the hashSet anymore
}
Можно ли это сделать?Очищает ли GC объекты, созданные в блоке {}, когда они выходят из контекста?
Кроме того, имейте в виду, что это всего лишь пример, иллюстрирующий мой вопрос, код сильно отличается.