内存中的DLL大小和硬盘上的大小

Gob*_*0st 6 c++ dll optimization performance

内存中的DLL大小和硬盘上的大小之间是否存在关系?

这是因为我正在使用任务管理器扩展(MS),我可以转到列表中的EXE并右键单击 - >模块,然后我可以看到此EXE正在使用的所有DLL.它有一个Length列,但是以字节为单位?并且DLL的值(Length)似乎与硬盘上的(DLL)大小不同.为什么?

Jer*_*fin 5

有一种关系,但它并不完全是直接或直接的.

首次使用DLL时,它会映射到内存.这不会将其加载到内存中,只需在您的进程中分配一些地址空间,可以/可以在需要时加载它.然后,DLL的个人网页获得通过按需分页加载到内存中 - 即当你是指一些得到分配的地址空间,代码(或数据)映射到该/那些地址(ES)将被载入如果它还没有在内存中.

现在,地址映射确实占用了一点空间(每个兆字节地址空间被映射一个4K页面).当然,当您将一些数据加载到内存中时,也会耗尽内存.

但是请注意,大多数页面可以/会在进程之间共享,所以,如果你的DLL在一次使用5个不同的过程,它会被映射的5倍(即一旦到使用它的每个进程),但仍然坚持内存中只有一个物理副本(至少通常是这样).

在这些之间,甚至可能有点难以确切地确定特定DLL的内存消耗的含义.