Я создал приложение на c #, которое использует 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-фон), но на самом деле он не отвечает мой вопрос:
Почему сборщик мусора освобождает память, только если сначала очистить список транзакций? Разве это не должно освободить память, так как словарь был разыменован?