*截图不是服务器……只是一个例子.
alt text http://www.malwareinfo.org/bootcamp/img/ProcessExplorer2.jpg
首先,你需要了解窗口页面没有出来.我要引用Eric Lipperts blog post的相关部分(轻微编辑)因为我自己不能说得更好:
“RAM可以被视为仅仅是性能优化.在RAM中访问数据,其中信息存储在以接近光速传播的电场中比在磁盘上访问数据快得多,其中信息存储在巨大的,重的黑色金属分子
操作系统会跟踪最频繁访问进程的存储页面,并在RAM中复制它们,以提高速度.当进程访问对应于当前未缓存在RAM中的页面的指针时,操作系统会执行“页面错误”,转出磁盘,并将页面从磁盘复制到RAM,从而做出合理的假设即将在不久的将来再次访问它.
操作系统在共享只读资源方面也非常聪明.如果两个进程都从同一个DLL加载相同的代码页,那么操作系统可以在两个进程之间共享RAM缓存.由于代码可能不会被任何一个进程改变,因此通过共享来保存RAM的重复页面是完全合理的.
但即使是聪明的共享,最终这个缓存系统也会耗尽RAM.当发生这种情况时,操作系统会猜测哪些页面很可能很快再次被访问,如果它们已经更改则将它们写入磁盘,并释放该RAM以读取更有可能再次访问的内容不久.
当操作系统猜错时,或者更可能的是,当没有足够的RAM来存储所有正在运行的进程中的所有频繁访问的页面时,机器开始“颠簸”.操作系统花费所有时间编写和读取昂贵的磁盘存储,磁盘不断运行,并且您无法完成任何工作.
这也意味着“耗尽RAM”很少会导致“内存不足”错误.而不是错误,它会导致性能不佳,因为存储实际上在磁盘上的事实的全部成本突然变得相关.
另一种看待这种情况的方法是,程序消耗的虚拟内存总量与其性能无关.相关的不是消耗的虚拟内存总量,而是(1)不与其他进程共享多少内存,(2)常用页面的“工作集”有多大,以及( 3)所有活动进程的工作集是否大于可用RAM.
到目前为止,应该清楚为什么“内存不足”错误通常与您拥有多少物理内存,甚至多少存储空间无关.它几乎总是关于地址空间,它在32位Windows上相对较小且容易碎片化. “
还有几点:
> dll和程序文件总是只被分页,永远不会出现,因为它们已经在磁盘上(并且通常在物理ram变低时释放的第一页)
>你更有可能耗尽免费页面表条目或者拥有大量内存的内存而不是任何其他内存问题(除了已经提到的整体性能不佳)
>即使您没有页面文件运行,您仍然可以获得页面错误
>一般来说,查看提交的内存更能说明进程如何使用内存
全面了解Windows中的内存管理工作情况
The Virtual-Memory Manager in Windows NT
如果你认为你有记忆问题,我首先建议你在troubleshooting windows memory观看这个演讲
这里有一个很好的解释,为什么有时候当你不记得内存碎片时,你会“失去记忆”:
另见Pushing the Limits of Windows: Physical Memory
More on Virtual Memory,Memory Fragmentation and Leaks,and WOW64
RAM,Virtual Memory,Pagefile and all that stuff (microsoft support)
更新:
Windows 10与内存有所不同,随着时间的推移,您将看到一个名为“系统和压缩内存”的进程Windows 10在分页列表中添加了“压缩存储”.这个ram是系统拥有的USER内存(通常系统只有内核内存)该存储器被压缩到适当位置,平均减少到约30%.这允许更多的页面存储在内存中(对于那些进行数学运算的人来说,空间增加70%)请注意,如果内存仍有压力,那么压缩存储(用户模式系统进程空间)中的页面可以放在修改后的页面上list(压缩)然后可以写入物理页面文件.系统将看到它们来自系统用户模式空间并被压缩,并且不会尝试将它们放回到商店中.因此,在Windows 10系统上,它可能看起来像系统吸入ram,但实际上它只是试图更有效地使用ram.自2013年以来,Mac用户一直在使用类似的功能,较新版本的Linux内核采用了内存压缩版本.这种节省内存的方法不仅更好,而且在其他操作系统中已经很常见.