当前位置:  开发笔记 > 前端 > 正文

"Mem Usage"高于WinXP任务管理器中的"VM Size"

如何解决《"MemUsage"高于WinXP任务管理器中的"VMSize"》经验,为你挑选了1个好方法。

在我的Windows XP任务管理器中,某些进程在"内存使用情况"列中显示的值高于VMSize.例如,我的Firefox实例将111544 K显示为内存使用情况,将100576 K显示为VMSize.

根据任务管理器的帮助文件,Mem Usage是进程的工作集,VMSize是虚拟地址空间中的已提交内存.

我的问题是,如果一个进程的已提交页面数是A,而同一进程的物理内存中的页数是B,那么它不应该总是B≤A吗?每个进程的物理内存中的页数不是已提交页面的子集吗?

或者这与进程之间的内存共享有关吗?请解释.(也许我对'工作集'的定义不合时宜).

谢谢.



1> computinglif..:

虚拟内存

假设您的程序(例如Oracle)在启动时分配了100 MB内存 - 虽然没有触及其他物理/磁盘页,但VM大小增加了100 MB.即VM只是记忆簿保存.

总可用物理内存+页面文件内存是系统中所有进程可以分配的最大内存.系统执行此操作以便确保在任何时间点如果进程实际开始消耗它分配的所有内存,则操作系统可以提供所需的实际物理页面.

私人记忆

如果程序将10 MB数据复制到该100 MB中,则操作系统会检测到没有页面已分配给与这些地址对应的进程,并将10 MB的物理页面分配到进程的专用内存中.(此过程称为页面错误)

工作集

定义:工作集是程序最近触及的一组内存页面.

此时,这10个页面将添加到流程的工作集中.如果该过程然后将此数据复制到先前分配的另一个10 MB缓存中,则其他所有内容保持不变,但如果那些旧页面不在工作集中,则工作集再次上升10 Mb.但是如果这些页面已经在工作集中,那么一切都很好,程序工作集保持不变.

工作集行为

想象一下,您的进程永远不会再触及前10页,在这种情况下,这些页面会从进程的工作集中删除,并可能发送到页面文件,以便操作系统可以引入更常用的其他页面.但是,如果没有紧急的低内存要求,则无需执行此分页操作,操作系统可以充当内存丰富的行为.在这种情况下,工作集只是让这些页面保持不变.

何时工作集>虚拟内存

现在假设同一个程序取消分配所有100 Mb的内存.程序VM大小立即减少100 MB(记住VM =所有内存分配请求的簿记)

工作集不需要受此影响,因为这不会改变最近触及的那些10 Mb页面的事实.因此,虽然操作系统可以在需要时回收它们,但这些页面仍然保留在流程的工作集中.

这将有效地使VM <工作集.但是,如果您启动另一个消耗更多内存的进程并且操作系统回收工作集页面,则会纠正此问题.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有