Windows用户必看 揭示内存优化工具那些黑暗
- +1 你赞过了
【天极网DIY硬件频道】随着电脑用户越来越多,各种应用软件也随之而出。这其中有一些为内存优化的软件工具,这些软件工具有很多被用户所应用,这些用户错误的认为这些软件为他们的内存带来了很大的提升,但他们去不知道,这些软件不仅没有为内存带来提升反而会严重降低系统的性能。今天笔者为就大家分析一下内存优化程序的内部原理,看看它们如何让Windows内存计数器显示出诱人的结果。
内存优化工具会在用户界面上显示一个图形标签,以表明当前的可用内存,还会显示一个指示条,以表明当前设置的阈值,超过这个阈值,该工具就会开始行动(所谓的优化内存)。还有一个指示条,用来显示优化工具可以释放的内存容量。通常用户可以配置以上两种或者其中一种设置,还可以手动触发内存优化,或者设置计划任务。某些工具还会详细显示执行过程。
当执行内存优化的计划任务时,通常这些程序的可用内存计数器会上升,有时候还可以显示动态效果,给人的感觉好像是这些工具确实正在释放内存,以供我们的应用程序使用。要理解这些内存优化工具如何让可用内存的数字不断上升,我们必须理解Windows是如何管理物理内存的。
Windows内存管理和大多数现代操作系统一样,Windows实现按需调页的虚拟内存机制。由于操作系统使用了虚拟内存,这就给应用程序造成了一个假象,以为计算机安装的内存远远超过自己所需要的数量。
在32位的Windows计算机上,进程具有4GB的虚拟内存地址空间,操作系统通常会把这4GB的地址空间划分为进程和系统两个部分。因此,每个进程可以获得2GB的虚拟内存,根据可用的容量。分配给所有进程的虚拟内存总数不能超过页面文件和大多数物理内存的总和(操作系统本身也要占据一小部分物理内存)。
有了这种机制,加上足够大的页面文件,就可以给进程分配超过物理内存容量的虚拟内存,Windows内存管理子系统必须让多个进程和缓存的文件数据(由缓存管理器管理)共享物理内存。如图1所示,内存管理器给每个进程(例如Windows Explorer、记事本和Word)指派一部分物理内存,这叫做进程的工作集。可分页的内核和驱动程序部分,加上可分页的内核内存缓冲区(叫做分页池),还有缓存管理器所管理的物理内存,它们具有自己的工作集,叫做系统工作集。
工作集就是进程在物理内存中的部分,可以用一个队列(数据结构)来表示。也就是说如果进程访问的页在工作集里,就不会发生页面错误事件。话反过来说,如果进程所需访问的页不在工作集中,就必须进行分页操作。
内存管理器可以扩展或者缩短系统和进程的工作集,以便让进程可以快速访问其代码和数据。计算机的内存管理硬件设备要求Windows按照“页”的块级别来管理工作集和虚拟内存。在32位的x86处理器上,页通常是4096字节(4KB)。然而操作系统和其他需要大量访问内存的应用程序,也可以使用4MB的“页”,以便优化性能。
但是为什么不默认采用4MB,而要采用4KB呢? 《Windows Internals》进一步提到,由于页需要采用保护机制,大的页面不利于设置更细微的保护粒度。例如在4MB的数据中,一部分需要只读访问,另一部分需要读写访问,则整个页只能设置为读写访问。
如果进程所访问的虚拟内存页不在工作集中,进程就会触发一个页面错误的硬件异常。如果发生这种情况,内存管理器会分配一个可用的物理内存页,以存放最近访问的数据。另外,内存管理器可能会给进程工作集添加新的页,以扩展进程的工作集。然而,如果内存管理器认为进程的工作集已经足够大了,它就会把工作集中的一个页调出去,以便腾出空间存放新的页。替换的策略是选择进程最近最少访问的页,这主要是假设进程在未来访问该页的可能性很小。
当内存管理器把页从进程的工作集中移走,它必须决定应该怎样处理这个页。如果该页已经修改过了,内存管理器会首先把它放到已修改列表中,这个列表中的页最终会写入到页面文件,或者写入这些页所对应的内存映射文件中。内存管理器会把页从已修改列表移动到备用列表中。未修改的页会直接移动到备用列表中。所以,我们可以把备用列表看成是文件数据的缓存。
最新资讯
新品评测
+1 你赞过了