Что подразумевается под «давлением памяти»? - PullRequest
0 голосов
/ 12 мая 2018

Прочитав Блог Тесс Феррандез о сборке мусора, она говорит, что существует три возможных причины для сбора:

  1. Когда вы выделяете новый объект идостигнут бюджет поколения 0, т. е. если новый объект приведет к превышению бюджета.
  2. Когда кто-то вызывает GC.Collect (Induced GC)
  3. На основе давления памяти

Я понимаю пункты 1 и 2, но что означает давление памяти в точке 3?

Я предполагал, что это общая память, доступная в системе,но если бы система действительно использовала всю свою память, то я бы предположил, что вся система будет иметь синий экран.

Что на самом деле означает мое давление памяти ?Чем он отличается от превышения бюджета поколения?

1 Ответ

0 голосов
/ 12 мая 2018

В пункте 3 Tess ссылается на «уведомление о нехватке памяти», отправляемое Windows в случае нехватки доступной памяти.Приложения могут прослушивать это уведомление - реагировать каким-либо образом до того, как произойдет что-то худшее (например, сохранить важные данные и т. Д. И т. Д.).Хорошо работающие приложения могут даже попытаться помочь ОС, обрезав собственную память.

CLR ожидает уведомления о нехватке памяти.Когда это происходит, GC срабатывает и, как правило, делает GC более агрессивными.Преимущества взаимны, потому что снижение нагрузки на память помогает всем приложениям в системе (включая само приложение .NET).

Когда отправляется уведомление о нехватке памяти, это не так хорошо документировано.Согласно комментарию во внутреннем классе System.Runtime.Caching.PhysicalMemoryMonitor, который, в свою очередь, основан на комментариях от внутренних реализаций Windows, уведомление о нехватке памяти сигнализируется, когда занято около 97-99% физической памяти (в зависимости отобъем физической оперативной памяти, установленной в системе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...