首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dll镜像的虚拟内存怎么会比硬盘空间大1000倍呢?

dll镜像的虚拟内存怎么会比硬盘空间大1000倍呢?
EN

Stack Overflow用户
提问于 2010-11-20 00:51:57
回答 1查看 144关注 0票数 0

我正在开发一个32位的windows应用程序,它有时会耗尽内存(2 2GB的虚拟地址空间)。当我查看如何使用WinDbg或VMMap分配虚拟内存时,我注意到dll映像占用了85MB的虚拟内存空间。具体地说,其中84MB位于".data“部分,并具有”写入时复制“保护。然而,当我查看硬盘时,dll只有81KB。

dll镜像的虚拟地址空间怎么会比磁盘上的大1000倍呢?请注意,我只是询问" image ",而不是堆或栈,或映射内存,只是镜像-我意识到堆、栈、映射内存等当然是额外的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-20 00:56:11

尝试创建一个空的.dll,并在文件范围内添加以下内容:

代码语言:javascript
复制
char global_stuff[84*1024*1024];

这应该在.bss部分中声明一个条目。这是图像中定义零初始化数据的部分。因为数据被初始化为零,所以只需在运行时声明它应该有多大,而不是在磁盘上存储一堆零,这是一个相当简单的优化。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4227346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档