不管你使用哪个版本的Windows,你都想避免这种情况。这就是说,如果Windows不必通过丢弃段且重新分配内存来得到物理内存或虚拟内存的话,这是最好的。例如,我们假定一个应用程序处理About对话框的那个部分(段)在应用程序文件中被标记为可弃。当Windows用完了其他类型的内存,它就完全丢弃这个段。如果你又想访问About对话框, Windows就通过分配一些新的线性内存来重建这个段,并且从磁盘上的应用程序文件中把这个段读回线性内存。当然,读回这个段需要物理内存关联到容纳这个段的线性内存范围。如果没有足够可用的物理内存,一些别的段首先要被丢弃。
因此,粗略地说,程序管理器的自由内存的数值是以下的总和:
- 可使用的物理内存
- 可用的虚拟内存交换文件空间
- 装载在内存中的所有可弃段的总和
远在你运行自由内存到一个危险的低水平前,Windows系统就将变得不稳定。系统被装载和释放段,交换和不交换虚拟内存弄得如此之慢,以致它要用所有处理时间去访问磁盘, 改写内存。
Windows3.1x中的可弃内存
如果你使用Windows3.1x,线性内存更多可能性被用完,导致Windows丢弃段并重新分配内存。如果这发生了,你可以增加虚拟内存交换文件的大小, 增加SYSTEM.INI文件中PageOverCommit=#的设置。
Windows95/98中的可弃内存
如果你使用Windows95/98,线性内存不会被用完,因此你或许永远不会遭遇这种情况。如果Windows95/98真地开始丢弃段,你应该释放Windows分区的空间。
整体DOS内存
Windows内存的最后一个方面是被称为‘整体DOS内存’的区域。它的正式叫法是常规内存,实际上它就是你系统的第一兆内存。
这个内存十分重要,因为Windows设计了向后兼容性(运行旧DOS程序和驱动程序的能力)。为了保持与DOS和DOS程序的兼容性,Windows使用第一兆内存作为DOS通信区域, 在第一兆内存放置DOS需要的关键结构,以及与DOS驱动程序和系统BIOS(基本输入/输出系统)通信需要的各种缓存。
不幸的是,整体DOS内存(第一兆内存)变得相当拥挤,部分原因是Windows倾向于把实际上不需要放在第一兆内存的东西放在那里。