首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sysinternals进程管理器中的“虚拟大小”是什么

sysinternals进程管理器中的“虚拟大小”是什么
EN

Stack Overflow用户
提问于 2010-06-13 06:08:48
回答 4查看 23.7K关注 0票数 17

我的应用程序运行了几个小时,任务管理器的任何值( vmsize、内存)都没有增加。但是几个小时后,我得到了内存不足的错误。

在sysinternals中,我看到“虚拟大小”在不断增加,当它达到大约2 GB时,我开始收到内存错误。

那么这是一种什么样的内存泄漏呢?我如何用代码来演示它呢?在sysinternsl进程资源管理器中,任何内存值都没有增加,但只有虚拟大小增加的代码,有可能重现相同的情况吗?

感谢您的建议

EN

回答 4

Stack Overflow用户

发布于 2010-06-13 06:26:18

虚拟大小是进程已分配的页数,当前不在工作集中(物理加载到RAM中)的那些页将在系统的页文件中。

通常情况下,分配的内存不是已释放的。如果没有特殊的工具,例如Rational Purify或Boundschecker,这可能很难在代码中追踪到。在sysinternals中,你可以看到肯定有漏洞,但它绝不会告诉你在哪里……

如果您的软件不是很大,您可以尝试注销"new“和"delete”,并通过管理已分配对象的列表来查看内存中是否有太多对象(可以这么说,制作自己的内存调试器)。windows世界中有一些像CRT memory checking utils from Microsoft这样的帮助器。它们在某些情况下很有用。

票数 11
EN

Stack Overflow用户

发布于 2010-06-13 06:20:24

从声音上看,您的地址空间快用完了。32位Windows将地址空间一分为二,一半用于用户程序,另一半用于系统,因此每个地址空间都有2 in。

最常见的原因是将内存空间碎片化,以至于找不到足够大的块来进行分配。不幸的是,如果不知道你在做什么,很难猜测为什么会发生这种情况。

票数 4
EN

Stack Overflow用户

发布于 2010-06-13 06:30:12

根据sysinternals论坛上的this thread,虚拟大小对应于进程的地址空间(我猜是提交和保留的内存页)

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

https://stackoverflow.com/questions/3030274

复制
相关文章

相似问题

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