Зарезервирует ли процесс все свободное пространство в своей памяти? - PullRequest
0 голосов
/ 30 января 2020

У меня есть приложение C#, которое иногда без особой причины будет занимать значительные объемы памяти. Я взял дамп и импортировал его в Dotmemory Решарпера. Несмотря на то, что все объекты памяти в тот момент занимали 1,4 ГБ, объем используемой процессом памяти был в 10 раз больше. Я заметил, что Heap Generation 0 показал, что он невероятно фрагментирован с использованием 52,5 МБ и почти 10 ГБ свободного места среди примерно 5 МБ закрепленных объектов.

Dotmemory Generation 0

Мой вопрос Windows резервирует весь сегмент памяти, включенный в кучу, для процесса, хотя на самом деле используется так мало его? Если бы эти объекты не были закреплены, Gen 0 был бы сжат, и куча сократилась бы в геометрической прогрессии, но я вполне уверен, что управляемый код отвечает за эти объекты, поэтому я не контролирую это.

...