Я работаю над 32-битным приложением Windows, которое иногда может нехватать памяти (2 ГБ виртуального адресного пространства). Когда я смотрю на то, как распределяется виртуальная память с помощью WinDbg или VMMap, я замечаю образ dll, который занимает 85 Мбайт памяти. В частности, 84 МБ этого файла находятся в разделе «.data» и имеют защиту «Копировать при записи». Когда я смотрю на жесткий диск, однако, DLL всего 81 КБ.
Как образ dll может быть более чем в 1000 раз больше в виртуальном адресном пространстве, чем на диске? Обратите внимание, что я спрашиваю только об «изображении», а не о кучах или стеках или отображенной памяти, а только об изображении - я понимаю, что, конечно, кучи, стеки, отображенная память и т. Д. Будут дополнительными.