Страницы

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

пятница, 20 декабря 2019 г.

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

#c_sharp #wpf #ram


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


Ответы

Ответ 1



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

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

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