Я создал приложение С#, которое использует до 150 мб памяти (частные байты), в основном из-за большого словаря:
Dictionary<string, int> Txns = new Dictionary<string, int>();
Мне было интересно, как освободить эту память. Я пробовал это:
Txns = null;
GC.Collect();
Но, похоже, это не так много в моих личных байтах - они падают с 155 до 145 мб. Любые подсказки?
Спасибо
-edit -
Хорошо, мне больше повезло с этим кодом (он получает личные байты до 50 МБ), но почему?
Txns.Clear(); // <- makes all the difference
Txns = null;
GC.Collect();
-edit -
Хорошо для всех, кто говорит "не использовать GC.collect", достаточно справедливо (я не буду обсуждать это, кроме как сказать, что вы можете увидеть мой фон C), но на самом деле он не отвечает мой вопрос: Почему сборщик мусора освобождает память только в том случае, если я сначала очистил список транзакций? Разве это не освобождает память, так как словарь разыменован?