Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

Не освобождается операционная память

При запуске программы стартовое окно занимает 17 мб оперативной памяти, из стартового окна создается новое, которое занимает 88 мб оперативной памяти, если закрыть это окно и вернуться к стартовому, то объем занятой памяти всё равно будет равен 88 мб. Как освободить оперативную память после закрытия окна?


Ответ

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

Комментариев нет:

Отправить комментарий