При запуске программы стартовое окно занимает 17 мб оперативной памяти, из стартового окна создается новое, которое занимает 88 мб оперативной памяти, если закрыть это окно и вернуться к стартовому, то объем занятой памяти всё равно будет равен 88 мб. Как освободить оперативную память после закрытия окна?
Ответ
В .NET память не освобождается в момент "закрытия окна". Объекты остаются висеть в куче до тех пор, пока их не зачистит сборщик мусора. Его можно заставить это сделать вызовами:
GC.Collect();
GC.WaitForPendingFinalizers();
И даже после освобождения памяти в управляемой куче - рантайм может не сразу отдать освободившуюся память системе - а вдруг вы ее опять захотите выделить. Тем более что "выделенная память" - это не конкретные куски памяти на микросхеме, а просто зарезервированный в огромном виртуальном адресном пространстве кусочек.
Комментариев нет:
Отправить комментарий