系统的总内存消耗

时间:2009-06-10 07:16:05

标签: windows-xp taskmanager

假设系统的总内存消耗(虚拟+物理)是Windows中任务管理器显示的“内存使用”和“VM大小”列的总和,这是正确的吗?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

在现代Windows中,“总内存消耗”确实没有单一的真相。这当然取决于定义,但真正的问题是你想要回答的问题。

像SQL-Server这样的某些进程倾向于使用他们可以获取的每个内存字节,如果你允许的话。 .NET CLR垃圾收集器监视内存使用情况并采取相应措施,尝试在内存不足时释放更多内存。

因此,例如,您可以拥有一个具有8 GB物理内存的系统,其中90%是“已使用”。实际上需要多少内存,很难说。同一系统可以在4 GB机器上运行,没有明显的性能损失或任何其他问题。

如果您想在Windows下探索内存管理的一些复杂性,请从以前的sysinternals站点下载"VMMap v2.0"。它显示了每个进程非常详细的内存使用情况,可能会帮助您完成任务。

引用VMMaps帮助: VMMap将内存分为以下几种类型之一:

图片 内存表示可执行文件,例如.exe或.dll。 “详细信息”列显示文件的路径。

<强>私人 私有内存不能与其他进程共享,根据系统提交限制收费,并且通常包含应用程序数据。

<强>共享的 可共享内存可以与其他进程共享,根据系统提交限制收费,并且通常包含不同进程中的DLL之间共享的数据或进程间通信消息。 Windows API将此类型的内存称为页面文件支持的部分。

映射文件 内存表示磁盘上的文件,“详细信息”列表示文件的路径。映射文件通常包含应用程序数据。

<强>堆 堆表示由用户模式堆管理器管理的内存,并且与私有内存一样,根据系统提交限制收费并包含应用程序数据。

托管堆 托管堆表示由.NET垃圾收集器分配和使用的内存。

<强>堆栈 堆栈是用于存储各个线程的函数参数,本地函数变量和函数调用记录的内存。堆栈再次按提交限制收费,通常按需增长。

<强>系统 系统内存是与进程关联的内核模式物理内存。绝大多数系统内存由进程页表组成。

<强>免 可用内存区域是进程地址空间中未分配的空间。

现在您只需要定义您认为“已使用”的内存类型,为所有进程添加这些内存,删除多个重复内容并查看数字...在任务管理器或其他工具中有一个原因,没有标有“总内存消耗”的单个数字: - )

答案 2 :(得分:1)

不,物理内存和虚拟内存可能重叠。如果一页内存位于虚拟内存中,然后分页到物理内存,则不一定要释放虚拟内存,可以在页面再次被页面调出时保留。