找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 281|回复: 0

[转贴]:怎样提高电脑的资源率?

[复制链接]
发表于 2002-12-17 17:40:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
怎样提高电脑的资源率?
出处:SOFTICP.COM

阅读量:1226

2002-12-12  作者:Amanda 整理

  在说到解决方案之前,有必要先解释一些更细节的问题。首先,系统资源基本上就是小段的内存,Windows 95/98为应用程序需要与操作系统通讯时使用而留出此段内存。在正常的环境下,Windows 95/98专用于系统资源的集中备用内存部分足以维持多数运行应用程序的需要。

  但是,并不是所有的应用程序都可靠地使用系统资源。一些应用程序会占用多于它们需要的系统资源,而其他的程序没有在它们结束运行后正确地返回给系统资源备用内存。那些没有返回的系统资源随即丢失,而资源内存减少。如果系统资源损耗继续下去,就有可能使得Windows 95/98性能降低并最终崩溃。

  如果你和大多数的人们一样,首先在你的大脑中浮现的信息就是“我的系统有足够的内存,那对我是不可能发生的情况!”可惜的是,专用于Windows 95/98系统资源的内存数量是全部实际内存量的很小一部分。基本上,这就意味着无论你在你的系统上安装多少内存――8MB或128MB――你在运行多个应用程序的时候都会用完可用的系统资源。

  当应用程序在Windows中运行时,Windows必须实时“跟踪”该应用程序的运行,并保留与之相关的许多信息,如按钮、光标、菜单的位置和位图、窗口的状况等,这些信息由Windows保留在一种叫堆的内存块中,堆的英文为Heap。简单地说,堆是采用特殊机制管理的内存块。由Windows的一个系统内核User.exe管理的堆叫作User资源堆(User Resource Heap),由另一个系统内核Gdi.exe管理的堆叫作GDI资源堆(Graphical Device Interface Resource Heap,简称GDI Resource Heap),User资源堆和GDI资源堆合称为系统资源堆(System Resource Heap),习惯上就把它们叫作系统资源(System Resource)。

  微软将Windows的系统资源(堆)分为五个堆,其中User资源堆为三个,而GDI资源堆为两个。

  三个User资源堆分别是:16位的用户堆(User Heap,64KB);32位的窗口堆(Windows Heap,2MB);32位的用户菜单堆(User Menu Heap,2MB)。

  两个GDI资源堆分别是:16位的GDI堆(GDI Heap,64KB);32位的GDI堆(GDI,2MB)。

  从这里的系统资源分类和大小我们应该明白,不管CPU是P4还是486,内存是8M还是1G,所有Windows的用户都拥有同样大小的系统资源(堆),用户不能自己增加或减少系统资源的大小,这是由操作系统决定的,与硬件档次没有任何关系。

  Windows的User资源堆和GDI资源堆的可用(Free)空间称为可用 User资源和可用GDI资源,Windows中以百分数表示它们,用户可以选择 “开始/附件/系统工具/资源状况”,来实时查看它们的大小。注意,“资源状况”不是Windows的默认安装组件,使用典型安装的用户需自己添加上去。

  接下来,我们要说说为什么可用系统资源会不断减少的问题——

  当一个应用程序在Windows中被加载时,Windows自动地将可用User资源堆和可用GDI资源堆中的一部分空间分配给它,而当应用程序退出时,这部分空间也应该由Windows收回以交给别的应用程序使用。但实际上几乎所有的Windows 用户都发现:一个应用程序加载前和退出后可用系统资源的值是不相等的,而且随着应用程序的不断加载和退出,随着Windows使用时间的增加,资源状况显示的可用系统资源也在不断减少。

  微软的正式解释是:
  * 系统初始化
  Windows在启动时要进行系统初始化(System Initialization)的过程, Windows的系统初始化属于延时初始化。例如,Windows在启动时只初始化当前使用的字体,以后当应用程序要使用到尚未被初始化的字体时, Windows才会初始化该字体,这种由应用程序根据需要提出要求而发生的初始化服务就是所谓的延时初始化。对于属于延时初始化的服务, Windows还采用了特别的管理方式,当向Windows提出延时初始化服务的应用程序退出后,与延时初始化服务相关的系统资源(例如上面提到的与新字体有关的系统资源)不会随着应用程序的退出而马上释放,这是造成应用程序加载前和退出后可用系统资源的值不相等的原因之一。Windows不马上收回与延时初始化服务,是为了防止该应用程序或别的应用程序以后又向系统提出同样的初始化服务而导致系统不断重复服务而浪费时间。例如对于加载同一应用程序,第二次加载的时间会明显少于第一次,显然延时初始化功不可没。

  * 兼容性
  在Windows中运行的所有16位应用 程序共享相同的地址空间,当其中某一个16位应用程序正常退出或出现错误而被关闭时, Windows 9X并不马上收回这个应用程序所占用的系统资源,这也是造成一个应用程序加载前和退出后可用系统资源的值不相等的又一个原因。只有当所有的16位应用程序全部退出后,Windows才能安全地收回被这些程序占用的系统资源,此时可用系统资源才会恢复到原值。之所以这样设计,主要是考虑到要让Windows 9X能继续运行大量的16位应用程序。

  * 资源泄漏
  按上述解释,可用系统资源的不断减少是正常的,这是 Windows的设计目的之一。但是许多人在实际工作中还发现在其他一些情况下Windows也会不能完全收回系统资源,这也导致可用系统资源不断减少,程序员称这种现象为资源泄漏(Resource Leak)。微软开始并未承认,但是随着证据的不断增加,最后还是不得不承认其中的一些现象是存在的。

  比如一个程序还未完成其加载过程时(即还没有启动完毕)就关闭它会造成资源泄漏,而且只有重新启动才能回收。

  另外一些应用程序退出后Windows并不马上收回分配给它的系统资源,而是保持15分钟左右,到Windows完全肯定不再需要时才将它们收回,这可以看作是延时初始化的一种延伸。

  用户使用“Ctrl+Alt+Del”强制性地关闭一些应用程序会造成资源泄漏,因此用户应该尽量使用应用程序本身的关闭功能退出应用程序,只有实在没办法时才使用这种关闭方法。因为这种强制关闭应用程序的方法往往只能关闭主程序,而不能关闭应用程序的一些子程序,因此会导致一些系统资源发生泄漏。

  一些编写不善的应用程序会造成资源泄漏。一个应用程序在运行中往往会因出现意外而崩溃,若程序员在编写应用程序时没有考虑到这种意外情况的出现,并在应用程序中有相应的代码处理这种意外,那么当该应用程序非正常关闭后,该应用程序所占用的系统资源就不能由Windows收回。

  还有一些应用程序,即使是正常关闭也不会释放它所占用的系统资源,这样的应用程序被程序员称为“垃圾”,计算机用户绝对不要使用这样的软件。

  还有一些实际存在而微软也没有给予解释的情况。比如用户上网结束后关闭拨号网络中的网络连接,然后按Ctrl+Alt+Del看看,一定会发现有一个名为rnaap(英文版)或者rnaapp(中文版)的程序还在运行,这是什么东西?其实这是拨号网络用来拨通ISP的远程网络访问程序(Remote Network Access Application Program),在用户登录网络的时候这个程序被运行,但是在用户从网络注销后它本身并未退出。这不免让人产生这样一个疑问:在这样一个庞大的Windows系统中,到底还有多少这样那样的例外存在呢?

  关于系统资源泄漏的问题还有许多,但在这里我们不再对它们进行详细的分析和解释,先看看应该如何解决这些问题——

  1.准确地来讲,Windows中并不存在一个有着实际意义的系统资源。可用系统资源一定等于可用User资源和可用GDI资源中值较小的那一个。

  2.Windows的可用User资源是根据所有User资源堆中可用空间最小的那个资源堆计算出来的;可用GDI资源的计算方法也是一样。为了保持与16位应用程序的兼容性, Windows 9X的大量数据都要使用16位64KB资源堆,这导致总是16位64KB的资源堆首先被大量消耗,因此在 Windows 9X中,限制系统资源使用的是64KB的资源堆而不是2MB的资源堆。

  3.系统资源是用来跟踪应用程序的运行而不是用来运行应用程序的,就像公路上车多车少,并不是车稍微多点就没有办法开车了。因此可以肯定地说,影响计算机系统性能的是计算机系统其他的因素,而绝不会是可用系统资源的大小。当用户计算机系统性能明显降低时,应该从别的方面去查找原因,而不要马上怀疑到系统资源身上。从硬件方面来看,内存太小导致系统不得不频繁使用虚拟内存是影响系统性能的主要原因之一;从软件方面来看,因为Windows是一个多任务的操作系统,大家都习惯同时运行多个应用程序而不管当时是否实际需要。而编写和调试这些应用程序的程序员一般只考虑其在单任务环境下的运行,而没有过多的精力从多任务环境来考虑和调试,因此许多应用程序间往往不能很好地协同工作,同时运行多个这样的应用程序会因它们彼此之间发生冲突而导致系统性能下降。当然,Windows 9X多任务管理机制的不完善也是造成这个问题的主要原因之一。

  4.虽然可用系统资源的减少不会对系统的性能有任何影响,但是其值最好不要小于15%,小于此值带来的直接后果是Windows将拒绝启动任何新的应用程序,而副作用是系统崩溃的可能性大大增加。

  5.Windows本身也要占用系统资源,因此绝对没有哪个Windows用户的可用系统资源会是百分之百,要保持有更多的可用系统资源的方法是不要同时运行太多的应用程序。Windows和它的许多应用程序都有一个不经用户同意就自动加载东西的坏毛病,大家可以运行Msconfig.exe来关闭一些没有必要自动加载的应用程序,如ICQ、电子词典和超级解霸的自动播放伺服器等。

  6.不要将系统资源和CPU资源(CPU使用率)相混淆,硬盘、光驱、软猫的数据处理、显卡的3D图像处理、声卡的3D音效处理占用的都是CPU时间(即消耗CPU资源),而不是系统资源,这些硬件设备的先进与否与占用系统资源的多少根本没有任何关系。按习惯,谈到硬件的资源占用一般是指其CPU资源的占用,而软件的资源占用既包括CPU资源占用又包括系统资源(堆)占用,但计算机用户关心的一般是后者,因此谈到软件的资源占用时一般是指其对系统资源的占用。

  (注意,这里所提到的与系统资源有关的各种问题只适用于Windows 3.X、Windows 9X和Windows Me,而不适用于Windows NT、Windows 2000和Windows XP,因为它们设计和管理系统资源的机制是不同的。)

  说到这里,我们可以知道系统资源都被谁占用了——
1、启动时需要加载的系统运行文件,设备驱动程序。(.dll .vxd .sys……)
2、任务栏的应用程序(病毒防火墙、计划任务、声音和输入法指示器、电源管理、多媒体播放软件……)
3、Windows的图形界面(桌面和菜单图标、背景、桌面主题、屏幕保护程序……)
4、以MS-dos方式运行的软件(如:加载了EMM386.exe、声卡的DOS驱动……)
5、应用程序废弃的动态链接文件文件(.dll……)
6、多次重复运行大型软件如Word等,也会造成系统资源减少。
7、安装过多的软件也会减少系统资源(如果你的MP3播放器就安装了5、6种,那么系统资源肯定会相应的有所减少)。

  当然,这里罗列出的并非全部原因,但主要是这些。针对这些原因,建议大家——
1、启动时尽量减少系统启动时辅助软件的加载,如:防火墙软件、QQ等,以免它们驻留内存,在需要时再运行它。在“开始”菜单下的“运行”中键入“MSCONFIG”,按“确定”按钮,再在出现的“系统配置实用程序”界面中按“启动”标签,取消对无需加载程序的选中状态,按“应用”或“确定”按钮,然后重新启动计算机,该自动加载程序就被取消了。

2、去掉Windows那些华而不实的东西,如:屏幕保护程序、桌面主题程序、计划任务程序、WEB方式桌面……

3、整理内存碎片,用Windows优化大师中附带的“磁盘缓存优化”→“内存优化”,可以显著增加系统资源。

4、优化桌面的图标,菜单等项目。减少桌面上快捷方式图标以及定期、不定期清理开始菜单。快捷方式图标和开始菜单中项目是消耗GDI资源以及USER资源的大户,尽量减少桌面快捷方式图标和保持一个整洁有序简明的开始菜单是节约资源的又一重要方法。要做到对不用的桌面快捷方式图标进行删除;桌面快捷方式图标与开始菜单下程序子菜单中重复的项目根据操作习惯选取一个即可,另一个可予删除;把同类型程序组织到一个文件夹中,减小开始菜单体积。例如可将所有Office组件组织到一个文件夹Office中,将Internet Explorer、 Internet News、Outlook Express、Microsoft Netmeeting 等组织到Internet文件夹;去掉一些不常用的项目,卸载“帮助”、“readme”等的快捷方式。

5、在不上网、不安装新软件的情况下,尽量不要打开病毒防护以及防火墙,可以减少一些随意重启,非法操作和死机的发生。

6、在Windows的图形环境下,没有必要加载声卡的MS-DOS驱动程序。

7、不要同时运行两个及更多大的软件,如:图形软件,音频压缩,以及刻录软件,不要在一个大程序没有响应完时,打开其它大的软件。

8、去掉“计划任务”的运行。一般情况下我们不会用到它,而它所能执行的维护任务,大多都能用手动的方法进行运行。如果去掉“计划任务”的运行,至少能节约2%的系统资源。 方法是:在计划任务的图标上双击,在弹出的窗口中选“高级”菜单,从中找到 “终止执行计划任务”单击之。

9、设置在同一窗口浏览文件夹。在Win98中,系统默认设置已经是使用同一窗口进行文件夹浏览,一般不需再另行设置。

10、用小程序释放内存。最简单的回收系统资源的方法就是亲手制作一个小程序来释放内存,这样即可简单、方便、有效地整理内存碎片。其实这个小程序就是两个VBString语句。新建一个文本文件,然后在里面键入:

Mystring = Space(16000000)或Mystring = Space(80000000)。

  前者适于内存小于128MB但大于32MB的电脑,后者适合内存等于或大于128MB的电脑,可以根据自己的情况选择,然后将其保存为memory.vbs。建议将其放在桌面,这样在任何时候你可以双击它来整理内存碎片。如果在使用后者时出现了问题,那么可以改为前者的语句。另外,在运行它之前建议关闭其他所有程序,这样才能得到最好效果。

11、合理地设置虚拟内存的大小,并使它尽量处于连续的硬盘空间中以加快执行速度。

12、如果觉得系统资源太少,不妨重新启动机器,这样会使你的系统资源恢复。

13、如果用了各种优化方法,本机的系统资源都停留在85%以下,此时建议您重装系统,这是个一劳永逸的大法!

  应该说,解决系统资源不足的办法还不止这些,不过上面这些也差不多够用了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 11:01 , Processed in 0.391433 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表