windows - sysinternals 进程资源管理器中的 "Virtual Size"是什么

标签 windows memory virtual-memory

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

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

那是什么类型的内存泄漏? 我如何用代码演示它?是否可以使用任何内存值都没有增加但只有 sysinternsl 进程资源管理器中的虚拟大小增加的代码来重现相同的东西?

感谢任何建议

最佳答案

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

通常您分配未释放的内存。如果没有像 Rational Purify 或 Boundschecker 这样的特殊工具,这可能很难在代码中追踪。使用 sysinternals,您会发现肯定有泄漏,但它绝不会告诉您在哪里......

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

关于windows - sysinternals 进程资源管理器中的 "Virtual Size"是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030274/

相关文章:

windows - Visual Studio 正在窃取焦点

c++ - 从 SDL 库的函数返回的指针

python - 在Python中读取大文件: Why am I getting a Segmentation Fault?

c# - Windows 窗体 DataGridView 中的 Accordion

c++ - 接收多条消息 Winsock2 C++

windows - 如何使用批处理文件进行 ftp?

mysql - 在 mysql MEMORY/HEAP 表中允许 TEXT 列的变通方法

c - 从内核空间访问数据段

linux-kernel - ARM Linux 页表条目格式——未使用的位?

heap-memory - 直接堆栈和堆访问;虚拟级还是硬件级?