You are on page 1of 8

剖 析 Windows 用 1G 内 存 还 慢 的 原 因

现在的内存基本达到了 1 元/MB 的均价,不少朋友的电脑告别了可怜的 64MB、128MB 内存,256MB 已


经成为标准配制,512MB 甚至 1GB 的内存也不再是"耸人听闻"。但是有一件事情让很多朋友疑惑:"为什
么 使 用 1G 内 存 我 的 Windows 启 动 、 软 件 运 行 速 度 还 是 这 么 慢 ? "

  安装大容量内存后,系统、程序运行效率没有得到大幅度提高,这是因为系统本身运行机制限制了其
管理和运用硬件资源的能力。所以纵然硬件资源非常丰厚,如果超出了 Windows 管理的范围,那么性能
也 不 会 得 到 明 显 提 升 。

    内 存 和 硬 盘

  许多菜鸟常常将物理内存和硬盘混淆在一起,因为两者的容量都是用 MB 或 GB 这类的单位表示,说
明物理内存和硬盘之间关系的最好比喻是:一个带一张桌子和一个文件柜的小办公室。

  文件柜就像硬盘,程序和数据可以长期安全地存放在那里,桌面代表物理内存,允许在办公桌上工作
的人(作用和处理器相同)直接用放在桌面上的任何文件(程序和数据)。为了对一个特定文件进行操作,首先
必须从文件柜中取出文件并放在桌面上。如果桌面够大,可以在桌面上同时打开多个文件。类似地,如果你
有更多物理内存,那么可以运行更多或更大的程序并对更多或更大的资料进行处理。

  给电脑增加硬盘空间就好比在办公室里放一个更大的文件柜,而增加更多内存就好比得到一个更大的
办 公 桌 , 可 以 同 时 对 更 多 程 序 和 数 据 进 行 操 作 。

    一 、 Windows 这 样 使 用 内 存

  想要知道为什么系统速度提升不再明显,必须先理解 Windows 怎样使用内存。这里要涉及一个概念


— — 资 源 。

  这不是平时所说的 CPU 资源,内存资源或统一的"系统"资源。我们接下来要讲到的"资源"就是程序可


以操纵的 Windows 物件。举例来说,屏幕上显示的每个窗口都是一个资源,每幅图片也都可以能是一个
资源。如果一个应用程序打开了磁盘上的一个文件,那么这个被打开的文件也是一个资源。以此类推,如果
一个应用程序需要使用一个资源,它就会向操作系统提出请求,要求新建一个或从存储器里调用。

    1 . 情 景 再 现 : 程 序 与 系 统 的 对 话

  程序说:"嗨,Windows ,我要新建一个 300 像素宽,200 像素高的窗口,ok?"于是,Windows


立即按要求创建或调用这个资源进内存,然后反馈给应用程序一个代号: "好,我已经创建好你要的窗口,
它的代号是#38710。"此后,需要用到新建的这个窗口时,应用程序都用 Windows 反馈的代号代表这个
资源。"Windows,麻烦你在显示屏幕左上角显示#38710。""好!"最后,当应用程序不需要用到该资源
的 时 候 , 它 会 要 求 Windows 去 除 这 个 资 源 。 "OK , 请 你 删 除 #38710 。 "" 好 ! " 。

    2 . 指 针 — — 内 存 中 的 邮 政 编 码

  那么这个代号是依据什么标准生成的呢?在绝大多数操作系统中,它是靠一种叫做 "指针"的东西来确
定的。你可以把整个内存想像成一个邮局,邮递员把需要寄往各地的信件分类放到很多个不同的信箱里。信
箱一个接一个,足足占据了一堵墙。每个心细那个都装了一些信件,包含要送往一个特定地区的信息。而且,
就好像每个地区都有邮政编码一样,每一块可以存储数据的内存空间也有一个地址——指针。代表这个存
储空间的一串数字。内存中某部分数据的"指针",也就是这些数据占据的第一处内存空间的地址。所以,如
果我是一个普通的操作系统,有一个应用程序要求我调用一个窗口,我就会按照它告诉我的要求调用这个
窗口进内存,如果这个资源的数据在内存中存储的地址开始于 #1234567,那么我就会返回一条信息给
应 用 程 序 : " 好 了 , 我 调 出 了 这 个 窗 口 , 它 是 #1234567 。 "

    3 . 解 决 指 针 带 来 的 问 题

  在 PC 中,这种指针有 4 个字节长。所以如果一个应用程序需要给内存里的某个数据配一个指针,那


就需要 4 字节的内存空间。这样的工作方式给早期的 Windows 设计者带来了不小的麻烦,因为那时制作
工艺尚不发达,内存非常昂贵,一台电脑上有 8MB 的内存就足以让用户无数次从梦里笑醒了,大多数电
脑只能配制 4MB 内存。在内存如此紧张的情况下,一个应用程序却经常需要用到几百万个资源。要用这些
资源,就要个每个资源配发一个指针。每个指针占据 4 个字节,几百万个指针,就会消耗掉数量客观的一
块内存空间。这就好比一份钱很少,但如果要发给全国人民每人一份钱,那就是至少一千三百万元的巨款
了 。

  所以,Windows 设计者采用了另外一种替代方案。他们创建了资源表。就是把当前调入内存的所有资
源的信息登记到一个清单。这样一来,当应用程序要求系统调用一个资源时,系统调用后就不给它配发指
针了,而是直接告诉应用程序该资源在资源表中的序号。"好了,我已经调用了你需要的资源,它在资源表
里面的序号是#383"因为需要不是内存地址,所以就可以用一个只需占用 2 字节的数字表示。这只是两个
字节的差距。但当你只有几 MB 内存,而你运行的程序动咎调用大量资源时,这两字节的差距就会带来很
大 的 优 势 。

你 知 道 吗 ?

    微 软 64 位 操 作 系 统 没 1GB 内 存 就 别 玩

  在 32 位 Windows 2000/XP 中,最大支持 4GB 的内存,每个应用程序最多只能使用 2GB 内存,因


为另一半的内存也留给系统使用了。而在 64 位 WindowsXP 中,这个限制没有了,每个程序能完全使用
4GB 内存,除 Windows ,微软还在开发 64 位版本的 SQL Server 2000 和 Windows Server2003 ,
不 过 要 运 行 这 些 应 用 程 序 , 需 要 你 的 电 脑 至 少 得 有 1GB 内 存 。
   
    4 . 时 过 境 迁 , 妙 计 成 缺 陷

    但 这 种 方 法 也 有 它 的 弊 端 — — 两 个 字 节 能 够 表 现 的 不 同 数 字 非 常 有 限

  我们可以做个实验:请你写不同的数字。如果只准你写一位数,那就只能写出十个不同数字。如果限制
写两位数,虽然能写出更多,但总数仍然有限。以此类推,允许位数越多,能写出的不同数字就越多。但只
要位数有限制,写出的不同数字的总数就始终有限。同理,如果允许系统使用 4 字节的序号,那么在这
个"位数限制"下,可以有几十亿个不同的序号可供使用。但如果只准系统使用 2 字节序号,能用的序号就
会锐减到 65536 个。于是,前面我们讲的资源表就不能无限的拉长。其中的序号最多只有 65536 个
  于是问题来了。当调用了 65536 个资源后,再想调用更多的资源,纵然内存空间还有 1GB,足以存
储数百亿个资源,但只有 2 字节的资源表却无法生成更多的序号!没有序号,就意味着无法将各资源区分
开来,应用程序自然无法使用这些没有 "户口"的资源!事实上,因为没有序号可用,系统根本无法同时调
用 65536 个 以 上 的 资 源 。

  但在 10MB 内存都是奢望的年代,要同时调用数十万个资源根本就是 " 无稽之谈 " 。所以当时的


Windows 设 计 者 们 没 有 把 这 个 问 题 放 在 心 上 , 果 断 地 选 用 了 资 源 表 , 选 用 了 2 字 节 序 号 。

  今天,操作系统算是得到报应了。内存便宜了,资源表和 2 字节序号仍然给我们节省了内存空间,但
它带来的坏处却远远超过了它带来的好处。我们有足够的内存空间,可以调用数百万个资源,但资源表里
面只有 65536 个序号!所以同一时间内,内存中只能有 65536 个资源!还有 1GB 内存空间可用?等着
吧 !

    5 . 真 正 " 耗 资 源 " 的 是 谁 ?

  明白了上面的道理,就不难分辨除了大个文件,大个程序外,真正消耗系统资源的是哪些程序了:

    ★ 调 用 大 量 细 小 资 源 , 把 桌 面 装 饰 的 花 里 胡 哨 的 软 件

    ★ 各 种 多 媒 体 播 放 软 件

    ★ 监 视 系 统 的 工 具 软 件

    ★ 能 在 字 体 菜 单 里 面 预 览 字 体 的 应 用 程 序 ( 如 MS Office)

  另外,在 Windows 9x n/Me 中运行 16 位程序(如 DOS 程序)时,Windows 会划定一块内存供所有


这 类 程 序 使 用 。 除 非 所 有 16 位 程 序 都 已 经 关 闭 , 这 块 内 存 是 不 会 被 释 放 的 。

    6 . 大 内 存 的 优 势 到 底 在 哪 里 ?

  难道大内存就没有作用了吗?内存厂商在骗钱?当然不是。当一个应用程序被启动后, Windows 的
一些组件也随之被启动,这是很常见的事情。当应用程序被关闭,Windows 会保留那些组件不关闭,因
为可能很快还要用到。同理,程序启动时调进内存的少数资源,也不会随着程序关闭而退出内存。

  这时,大内存的有时正可以得到体现了。一方面,大内存可以一次性容纳大量数据,减少使用性能远
不如内存的硬盘作为虚拟内存使用的几率,提高数据调用速度。另一方面,关闭程序过后,更多的常用数
据会有充足的空间保留在内存中不被清除。一旦重启程序,你会发现明显比使用小内存时快!

    二 、 大 内 存 使 用 精 要

    1 . 把 内 存 变 成 你 的 硬 盘

  如果你的内存实在富裕,那么可以使用微软专门为 Windows2000 设计的 RAMDISK ,它能把部分


内存虚拟成一块硬盘,把本来保存在硬盘的数据虚拟到内存中。比如,将 Windows 的临时文件,
Internet 的临时文件放置到这个虚拟磁盘中。大家知道,内存的速度要比硬盘速度快多了,这样能大幅提
高数据读取速度,使 Windows 运行更加高效,同时,由于数据实际保存在内存中,所以在关机后,其中
的 数 据 就 会 消 失 , 因 此 能 在 一 定 程 度 上 加 强 系 统 安 全 性 。

第一步:从 http://www.download.mocrosoft.co ... 5/EN-US/ramdisk.exe 下载 RAMDISK。并将其解


压 缩 到 一 个 临 时 文 件 夹 中 , 比 如 C : \RAMDISK

  第二步:点击 " 开始 è 设置 è 控制面板 " ,双击打开 " 添加 / 删除硬件 " ,接着选择 " 添加 / 排除设备故
障 " 并单击 " 下一步按钮 " ;在出现的 " 选择一个硬件设备 " 窗口中选中 " 添加新设备 " 项,然后单击 " 下一
步 " 按钮;在接下来的窗口中选择 " 否,我想从列表中选择硬件 " 并单击 " 下一步 " 按钮;接着在 " 硬件类
型"列表中选择"其他设备"并单击"下一步";在出现的窗户口中单击 "从磁盘安装"按钮,在弹出的"从磁盘
安装"窗口中将"厂商文件复制来源"设置为 "c:\RAMDISK" ,确定后即出现选择窗口,选中"型号"列表中
的"Ramdisk Driver"项并单击"下一步"按钮,期间 Windows 会出现"没有找到数字签名 "的对话框,单
击 " 是 " 按 钮 进 行 安 装 。

    第 三 步 : 打 开 " 记 事 本 " , 输 入 一 下 文 字 , 并 将 其 保 存 为 Ramdisk.reg

    Windows Registry Editor Version 5.00

    [HEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\Servioes\Ramdisk\Parameters]

    "BreakOnEntry"=dword:00000000

    "DebugLevel"=dword:00000000

    "DebugComp"=dword:ffffffff

    "DiskSize"=dword:01f00000

    "DriveLetter"="R:"

    "RootDirEntries"=dword:00000200

    "SectorsPerCluster"=dowrd:00000002

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\Environment]

    "TEMP"="R:\\"

    "TMP"="R:\\"

    [HKEY_CURRENT_USER\Environment]
    "TEMP"=R:\\"

    "TMP"="R:\\"

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders]

    "Cache"="R:\\"

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell
Folders]

    "Cache"="R:\\"

    [HKEY_USERS\.DEFAULT\Environment]

    "TEMP"=R:\\"

    "TMP"="R:\\"

    [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders]

    "Cache"="R:\\"

   [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell
Folders]

    "Cache"="R:\\"

  完成后,双击 Ramdisk.reg,将其导入注册表。以上注册表数据可以在 www.cfan.com.cn 下载。


小 提 示

    Ramdisk.reg 文 件 中 键 含 义 为 :

    Parameters : 设 置 Ramkisk 的 盘 符 为 R , 大 小 为 30.9MB

    Session Manager\Environment : 设 置 系 统 的 TEMP 和 TMP 环 境 变 量 到 虚 拟 驱 动 器 R 。

   HEKY_CURRENT_USER\Environmnet :设置当前用户的 TEMP 和 TMP 环境变量到虚拟驱动器 R

    Both HKCU Shell Folders : 设 置 当 前 用 户 的 Internet 临 时 文 件 到 虚 拟 驱 动 器 R 。


    HKY\.DEFAULT keys : 设 置 默 认 用 户 的 TEMP 、 TMP 和 Internet 临 时 文 件 到 虚 拟 驱 动 器 R

    第 四 步 : 关 机 , 然 后 重 启 动 Windows2000 即 可 。

    小 提 示

  当然微软提供的 RAMDISK 功能相对比较简单,目前网上还有一些更为强大的内存虚拟软件,比如


RamDisk 等 。

    2 . 修 改 注 册 表 发 挥 大 内 存 优 势

    现 在 请 打 开 注 册 表 编 辑 器 , 找 到
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\ControlSession
Manager\MomoryManagement] ,在右侧窗格修改一下键值 (要注意的是,做一下设置的前提是内存
最 好 超 过 512MB , 并 仅 限 于 Windows 2000/XP) 。

  (1)"LargeSystemCache"(启动大的系统缓存):在内存中开辟一块大的内存空间用于磁盘文件系统
的预读取操作。当程序连续请求的数据增加时,Windows 通过系统缓存自动预读,使程序能以最快速度
获取所需数据。由于启用这个系统缓冲会占用较多的物理内存,使得能被程序利用的可用物理内存减少。将
其 值 设 为 1 。 这 样 , 系 统 缓 存 从 4MB 增 加 到 8MB 。

  (2)"SecondLevelDataCache"(提高 CPU 性能):CPU 的处理速度要远远大于内存的存取速度,而


内存又要比硬盘快得多。这样 CPU 与内存之间,内存与磁盘之间就形成了影响性能的瓶颈效应,前面
的"LargeSystemCache"是为了缓解内存与磁盘瓶颈而设计的,而 CPU 为了能够迅速从内存获取处理数
据也设置了一种缓冲机制 L2 Cache(二级缓存)。调整这个键值能够使 Windows 更好地配合 CPU 利用该
缓 存 机 制 获 得 更 高 的 数 据 预 读 取 命 中 率 。 建 议 将 其 设 置 为 512

  (3)DisablePagingExecutive(禁用页面文件):将其值改为 1(十六进制),这样将使所有程序和数据
强制性限定在物理内存中运行,而不是使用虚拟内存。很明显,当有足够多的物理内存来完成所需任务时 ,
这样做必使系统性能得到巨大的提升。对于内存仅有 64MB 的用户而言启用它或许就是灾难——系统频繁
出 错 , 直 至 崩 溃 。

  (4)"IOPageLockLimit"(定制输入/输出缓冲尺寸):输入输出系统是设备和微处理器之间传输数据的
通道,当扩大其缓冲尺寸时数据传递将更为流畅。同理,具体设置多大的尺寸要视物理内存的大小和运行
任 务 多 少 来 决 定 , 一 般 来 说 , 如 果 内 存 有 64MB 就 可 将 该 双 字 节 键 的 16 进 制 值 设 置 为
400(1MB)、800(2MB)或 1000(4MB)128MB 内存可设为 1000(4MB)、2000(8MB)或 4000(16MB);
256MB 内存 4000(16MB)或 8000(32MB)。当然如果有更多内存,完全可以将其设为 10000(64MB)甚
至 更 多 。 当 设 为 0 时 , Windows 将 自 动 配 置 。

    小 提 示

    据 称 , 此 设 置 还 能 够 有 效 解 决 BT 下 载 损 伤 磁 盘 的 问 题 。
    3 . Windows98/Me 能 用 1GB 内 存 吗 ?

  Windows98/Me 不支持超过 1GB 以上的内存,同时,在内存超过 128MB 后,还需进行特别调整才


能使系统更好地管理和使用内存,并避免出现大内存引发的系统故障。所有的关键设置都围绕 Vcache(虚
拟 高 速 内 存 ) 。

    你 知 道 吗 ?

    什 么 是 Vcache ?

  它是 Windows 为硬盘分配的、作为高速缓冲的物理内存,可以大大提高硬盘的读写速度,类似于


DOS 下的 Smartdrv 的用途。简单地说,Vcache 是 Windows 在物理内存中自动分配的一块空间,用来
保存曾经使用过的,并且 Windows 认为还会被再次使用的代码和数据,这样当新的程序要求使用这些代
码和数据时,就不必从硬盘中读取,而直接从内存中读取,这样速度会快出不少,从而大大提高系统性能 。

(1)128MB~512MB

  据专家介绍,如果内存为 128MB~512MB ,最好用 " 记事本 " 打开 c:\windows\system.ini 查找


[Vcache]一节,找到以"MaxFilecache="开头的一行,并设置其值为物理内存的 70%(由于这里使用的
数 值 以 KB 为 单 位 , 需 要 使 用 MB*1024 或 Bytes/1024 的 公 式 来 转 换 数 据 ) , 比 如 : 你 的 内 存 为
128MB , 那 么 就 应 该 是 128*0.7*1024=91750.4( 约 为 91750KB) , 该 语 句 应 写
为 "MaxFileCache=91750"

    (2)512MB 以 上 内 存

  有些朋友会发现,当把内存增加到 512MB 以上后,启动 Windows98/Me 或打开 DOS 窗口时,系


统 会 提 示 " 内 存 不 足 " 。

    这 主 要 是 因 为 Windows98/Me 处 理 大 于 512MB 内 存 时 存 在 缺 陷 , 因 此 最 好 将 Vcache 的


MaxFileCache 值 制 定 为 512MB(524,288KB) , 也 就 是 "MaxFileCache=524288" 。

    (3)1GB 内 存

  如果内存达到了 1GB 或更高,那么 Windows98/Me 会出现连续重启、死机或在使用 Windows


Update 过 程 中 不 断 重 启 的 故 障 。

  要解决这个问题,同样是打开 System.ini 文件,在[386Ehh]字段添加"MaxPhysPage=40000"。


这 样 , 就 可 以 限 制 Windows 读 取 的 内 存 控 制 在 1GB 以 下 。

    如 果 无 法 进 入 Windows , 那 么 可 在 重 启 时 一 直 按 下 Ctrl 键 直 到 出 现 启 动 菜 单 , 接 着 选
择 "Command Prompt Only" 项 , 在 出 现 命 令 提 示 符 后 , 输 入 "edit system.ini" 并 回 车 , 接 着 在
[386Ehh] 字 段 添 加 "MaxPhysPage=40000" 。
    4 . 关 闭 休 眠

  很多用户喜欢休眠功能,这样可以实现快速开机功能,但对于大内存的电脑来说,在不经常读、写硬
盘的情况下,最好是把硬盘休眠功能关闭,因为有时也会因此而造成无故死机故障。

    5 . 有 大 内 存 就 可 以 不 要 虚 拟 内 存 了 ?

  经常看到不少文章介绍,再有了大内存后,就可以将虚拟内存禁用掉。其实不然!比如:
Windows98/Me 对大于 512MB 的内存有先天不足,大于这个数量的内存, Windows98 会出现不稳定
及启动速度变慢的情况。如果使用了大内存加上禁用虚拟内存,不稳定因素将会进一步增加。

  另外,Windows 本身的设计是,一旦发现有进程转入不活动状态,就会把分配给它的内存空间映射
到交换文件中,尽可能空出物理内存给其他活动的进程,并不是用完物理内存才开始动用交换文件。因为
如果等到物理内存用完再调用,就已经太迟了。在配制较低的电脑上势必造成数据传输和处理停滞。所以禁
止虚拟内存从原则上来讲,最易引起 Windows 异常,及时不出现运行不了的故障,也会频繁提示虚拟内
存 不 够 , 请 重 新 设 置 云 云 。

    你 知 道 吗 ?

  据华硕专家介绍,在使用 INTEL 850/850E 芯片组的主板时,如果搭配了 2GB RAMBUS 内存后,


电脑会出现不稳定现象。这是由于 Intel850/850E 芯片组的限制,Intel 的建议为:内存条数*每个内存上
的晶片数≤24 颗。而目前国内销售的 RAMBUS 256 内存的晶片数是 8 颗,Rambus512MB 内存的晶片
数 就 是 16 颗 , 所 以 当 用 户 使 用 了 过 大 的 内 存 时 都 有 可 能 出 现 不 稳 定 现 象 。

    6 . 让 大 内 存 为 硬 盘 助 力

   如 果你 拥有 了超 过 512MB 的内 存,并且还有一块迈拓或昆腾硬盘,那么 Maxtor 公司推出的


MaxBoost 值得一试,据称,它能大幅提升硬盘性能,最大可以提升约 60%的硬盘性能。该软件其实是一
块磁盘驱动,替换了 Windows2000/XP 的磁盘驱动,能针对不同应用软件自动在系统内存中设置一个适
合大小的缓存,在读写数据前起到预读和缓冲作用,利用磁盘读写数据以一种不肯公布技术细节的 "高级
算法",从而有效的提升硬盘读写速度,达到提升应用程序和系统速度的目的。据一些专家介绍,该软件虽
然没有官方宣称的那样神奇,但确实在文件复制等操作方面大显身手。当然由于 MaxBoost 还处于测试阶
段,所以仍存在一些问题,所以建议普通玩家在该软件正式推出后再使用。

You might also like