土木在线论坛 \ 水利工程 \ 水利软件 \ 全面理解虚拟内存及优化方法

全面理解虚拟内存及优化方法

发布于:2005-04-18 12:04:18 来自:水利工程/水利软件 [复制转发]
众所周知,操作系统的任务主要是合理地调配系统的各种资源,为各种程序提供运行环境,它可以被看做是硬件和应用软件之间的一种媒介。其中对内存的管理是系统的主要职责之一,怎样使有限的内存用在刀刃上,如何摆脱系统本身所需的内存“瓶颈”限制,是一个非常值得我们关心的问题。

  什么是虚拟内存
  不知大家发现没有,在Windows 2000(XP)目录下有一个名为pagefile.sys的系统文件(Windows 98下为Win386.swp),它的大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆,这种毫无规律的变化实在让很多人摸不着头脑。其实,pagefile.sys是Windows2000(XP)下的一个虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,也就是说,只有在物理内存已经不够使用的时候,它才会发挥作用。

  虚拟内存的产生

  我们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。当运行一个程序需要大量数据、占用大量内存时,内存就会被“塞满”,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存。现在我们也明白为什么pagefile.sys的大小会经常变化了。

  虚拟内存的优化

  虚拟内存的大小是由Windows来控制的,但这种默认的Windows设置并不是最佳的方案,因此我们要对其进行一些调整。这样才能发挥出系统的最佳性能。

  1、改变页面文件的位置

Windows 9x的虚拟内存分页位置,其实就是保存在C盘根目录下的一个虚拟内存文件(也称为交换文件)Win386.swp,它的存放位置可以是任何一个分区,如果系统盘C容量有限,我们可以把Win386.swp调到别的分区中,方法是在记事本中打开System.ini(C:\Windows下)文件,在[386Enh]小节中,将“PagingDrive=C:WindowsWin386.swp”,改为其他分区的路径,如将交换文件放在D:中,改为“PagingDrive=D:Win386.swp”,如没有上述语句可以直接键入即可。  

  而对于使用Windows 2000和Windows XP的,可以选择“控制面板→系统→高级→性能”中的“设置→高级→更改”,打开虚拟内存设置窗口,在驱动器[卷标]中默认选择的是系统所在的分区,如果想更改到其他分区中,首先要把原先的分区设置为无分页文件,然后再选择其他分区。
  

  2、改变页面文件的大小

将虚拟内存的最大值与最小值都设为物理内存的1.5倍(这样设置后,系统无需根据虚拟内存的使用量来调节虚拟内存文件的大小,一方面节省了系统资源,另一方面可以有效减少磁盘碎片的产生)。

  3、禁用页面文件

  当拥有了512MB以上的内存时,页面文件的作用将不再明显,因此我们可以将其禁用。方法是:依次进入注册表编辑器“HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession Ma-nagerMemoryManagement”下,在“DisablePa-ging Executive”(禁用页面文件)选项中将其值设为“1”即可。


  4、清空页面文件

  在同一位置上有一个“ClearPageFileAtShutdown(关机时清除页面文件)”,将该值设为“1”。这里所说的“清除”页面文件并非是指从硬盘上完全删除pagefile.sys文件,而是对其进行“清洗”和整理,从而为下次启动Windows XP时更好地利用虚拟内存做好准备。

5.双系统中共享虚拟内存--节省空间

  重新启动计算机并登录到Windows XP,运行注册表编辑器,依次展开HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management分支,双击右侧窗口中的“PagingFiles”键值,将其值改为“C:\win386.swp 200 200”(注意:中间的200前后各有一个空格)。

  依次展开HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Memory Management分支和HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\

  Control\Session Manager\Memory Management分支,按上述方法将“PagingFiles”键值改为“C:\win386.swp 200 200”。

  展开HKEY_LOCAL_MACHINE\SYSTEM\Current ControlSet\Control\BackupRestore\FilesNotToBackup和HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\BackupRestore\FilesNotToBackup分支,将以上分支下的“Memory Page File”键值均设置为“\Win386.swp”。

  现在退出注册表编辑器,重新启动计算机,登录到Windows XP后将Pagefile.sys文件删除,至此大功告成!
  • cgya2
    cgya2 沙发
    楼主辛苦了,写了这么多。不过建议以后少写这些文章,网上太多了。
    2005-04-21 21:46:21

    回复 举报
    赞同0
这个家伙什么也没有留下。。。

水利软件

返回版块

13.32 万条内容 · 203 人订阅

猜你喜欢

阅读下一篇

注册表的备份与恢复

从Windows 95以来,微软就将Windows系统的配置信息存储在一个名为注册表的数据库中。它是Widnows系统管理所有软硬件的核心,其中包含了每个计算机用户的配置文件以及有关系统硬件、已安装程序和属性设置等重要信息。因此,注册表错误往往会导致系统崩溃,所以保持注册表的“健康”就显得尤为重要。那么,如何保证注册表的“健康”呢?老办法——备份与恢复。 1.Windows 9x注册表的备份与恢复 (1)使用Scanreg备份/恢复注册表   系统在启动过程中会自动对注册表进行扫描,会将注册表及Win.ini、System.ini一同打包压缩为rb00?.cab,存放在C:\Windows\sysbckup的目录下,若有错误便自动修复。在系统运行时也可以检查注册表,注册表检测软件为了DOS版的scanreg.exe和Windows版的scanregw.exe,只要输入“Scanreg”,就会自动启动相应的版本。单击“开始”→“运行”,在“打开”对话框中输入“Scanrge”,然后单击“确定”,程序会扫描注册表,并显示扫描结果。如果注册表有错误便会提示您是否进行自动修复,如没有对注册表做备份可让它自动修复。如果正常而且今天还未备份的话,程序会提示您进行备份。   当注册表有错,不能自动修复且不能进入Windows时,可在DOS下运行Scanreg/Fix进行修复。这样,可排除由于系统自动启动时通过初始化程序System.ini和Win.ini加载了错误的模块或应用程序以及病毒侵入造成注册表修复失败的可能。   当使用Scanreg进行系统注册表的备份后,恢复时需要在实模式下的纯DOS环境,在DOS提示符下键入Scanreg/restore,Scanreg会先检测注册表,然后就会显示几个文件提供选择,确定自己认为正常的备份进行恢复。DOS版Scanreg.exe有3个功能,其参数如下:   BACKUP——备份注册表   RESTORE——恢复注册表   FIX——修复注册表 (2)使用Regedit备份/恢复注册表   注册表编辑器除了可以用于配置的修改外,还有一个非常重要的功能,那就是对注册表进行备份和恢复。   ●注册表的备份   运行“regedit”,打开“注册表编辑器”窗口。   打开“注册表”→“导出注册表文件”菜单命令,弹出“导出注册表文件”对话框。选择注册表备份文件的保存路径、名称以及保存全部还是只保存注册表的某个分支。根据自己的需要设定好后,单击“保存”按钮即可完成注册表的备份。 ●注册表的恢复   打开“注册表编辑器”后,运行“注册表”→“引入注册表文件”,弹出“引入注册表文件”对话框   找到曾经导出的注册表备份文件,单击“打开”按钮即完成注册表的恢复,恢复完成后出现一个提示框,单击“确定”按钮并重新启动计算机。 (3)利用注册表编辑器恢复   如果在注册表出错前备份过注册表,也可以在DOS环境下使用regedit来恢复,操作步骤如下:   用引导盘启动计算机,进入Windows目录,在该目录下键入“regedit/C *.reg”,其中*.reg为备份的注册表文件名,然后重新启动计算机使新的注册表生效。   注意:这种方法速度非常慢,所以大家一定要有耐心,如果中途中止,那么可能会破坏当前注册文件,导致计算机不能启动。 2.Windows 2000注册表的恢复   Windows 2000的注册表也分为两个部分,但是包括多个文件。其中,用户配置文件保存在根目录“Documents and Settings”下的用户名的目录中,包括Ntuser.dat和Ntuser.ini两个隐藏文件及Ntuser.log日志文件。系统配置文件位于Windows 2000系统目录下的“system32\config”中,包括Default、Software、System、Appevent.evt、Secevent.evt、Sysevent.evt等多个隐藏文件及其相应的log文件和.sav文件。这些注册表文件在Windows 2000运行时无法使用其他工具打开,这一点于Windows 9x下的System.dat及User.dat不同。   在Windows2000中如果要完全备份注册表,可以在“运行”框中输入“regedit”打开注册表编辑器,打开“注册表”→“导出注册表文件”命令,选择导出的范围为全部,然后给出备份的注册表文件的路径及名称即可。恢复注册表的方法同上,只需要单击“注册表”菜单下的“导入注册表文件”,然后选择磁盘上相应的注册表备份文件即可。   如果只需要保存一个根键或者一个主键,可以使用WINNT\system32\regedt32.exe。首先,选择要保存的主键或子键,然后再单击“注册表”菜单下的“保存项”命令,在弹出的“保存项”对话框中输入要保存的注册表文件的文件名,扩展名建议使用“reg”,便于今后的管理。   因为Windows 2000是一个真正的多用户操作系统,因此在保存某些主键或子键时,因为执行操作的用户不同,或者是该主键或子键正在被系统使用,会出现禁止访问的警告,例如“权限不足、无法保存项”等消息提示。这是如果您是Administrator身份则可以使用“安全”菜单下的“权限”命令,对这些主键或子键的用户赋予“完全控制”的权限,然后就可以保存该项了。

回帖成功

经验值 +10