Как избежать большого объема фиксации памяти в процессе Windows - PullRequest
0 голосов
/ 31 января 2020

Я работаю над 32-битным приложением (основной исполняемый файл VC ++ и парой Delphi dll), которое медленно вытекало из памяти (в течение недель или месяцев). Несмотря на то, что я устранил утечки, все еще остается одна проблема - в то время как рабочий набор и набор активной рабочей памяти остаются относительно низкими (около 50 МБ), размер фиксации продолжает увеличиваться примерно до 1,7 ГБ.

Я понимаю, что Windows (особенно Windows 10) может быть довольно агрессивной фиксацией памяти в процессе, но все же я не вижу очевидной причины для этого.

Я исправил VirtialAlloc / VirtialAllocEx / VirtialAlloc2 / et c. используя Detours, чтобы увидеть, когда диспетчеры памяти VC ++ и Delphi будут вынуждены запрашивать больше памяти у ОС, но после нескольких начальных запросов при запуске я не вижу вызовов этим функциям, пока размер фиксации все еще медленно растет.

Что еще может быть причиной роста размера коммита? Любые операции ввода / вывода? Память сопоставленных файлов?

...