电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

系统资源泄漏的问题和对策.doc

5页
  • 卖家[上传人]:鲁**
  • 文档编号:487886908
  • 上传时间:2023-01-25
  • 文档格式:DOC
  • 文档大小:22KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、系统资源泄漏的问题和对策有人说,如果使用Windows98,那么在使用了3个小时以后,最好能重新启动一次,因为它太累了。事实上确实如此,但并不是因为它太累了,而是因为系统资源的泄漏。一、系统资源谈到Windows时,有一个必说的话题系统资源(System Resource),但系统资源到底是什么,有人说是指CPU,有人说是指硬盘空间,有人说是指内存 当应用程序在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)

      2、,习惯上就把它们叫作系统资源(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的默认安装组件,使用典型安装的用户需自己添加上去二、为什么可用系统

      3、资源不断减少当一个应用程序在Windows中被加载时,Windows自动地将可用User资源堆和可用GDI资源堆中的一部分空间分配给它,而当应用程序退出时,这部分空间也应该由Windows收回以交给别的应用程序使用。但实际上几乎所有的Windows 用户都发现:一个应用程序加载前和退出后可用系统资源的值是不相等的,而且随着应用程序的不断加载和退出,随着Windows使用时间的增加,附图中资源状况显示的可用系统资源也在不断减少。 微软的正式解释是: * 系统初始化 Windows在启动时要进行系统初始化(System Initialization)的过程, Windows的系统初始化属于延时初始化。例如,Windows在启动时只初始化当前使用的字体,以后当应用程序要使用到尚未被初始化的字体时, Windows才会初始化该字体,这种由应用程序根据需要提出要求而发生的初始化服务就是所谓的延时初始化。对于属于延时初始化的服务, Windows还采用了特别的管理方式,当向Windows提出延时初始化服务的应用程序退出后,与延时初始化服务相关的系统资源(例如上面提到的与新字体有关的系统资源)不会随

      4、着应用程序的退出而马上释放,这是造成应用程序加载前和退出后可用系统资源的值不相等的原因之一。Windows不马上收回与延时初始化服务,是为了防止该应用程序或别的应用程序以后又向系统提出同样的初始化服务而导致系统不断重复服务而浪费时间。例如对于加载同一应用程序,第二次加载的时间会明显少于第一次,显然延时初始化功不可没。 * 兼容性 在Windows中运行的所有16位应用程序共享相同的地址空间,当其中某一个16位应用程序正常退出或出现错误而被关闭时, Windows 9X并不马上收回这个应用程序所占用的系统资源,这也是造成一个应用程序加载前和退出后可用系统资源的值不相等的又一个原因。只有当所有的16位应用程序全部退出后,Windows才能安全地收回被这些程序占用的系统资源,此时可用系统资源才会恢复到原值。之所以这样设计,主要是考虑到要让Windows 9X能继续运行大量的16位应用程序。 * 资源泄漏 按上述解释,可用系统资源的不断减少是正常的,这是 Windows的设计目的之一。但是许多程序员在实际工作中还发现在其他一些情况下Windows也会不能完全收回系统资源,这也导致可用系统资源不

      5、断减少,程序员们称这种现象为资源泄漏(Resource Leak)。微软开始并未承认,但是随着证据的不断增加,最后还是不得不承认其中的一些现象是存在的。 比如一个程序还未完成其加载过程时(即还没有启动完毕)就关闭它会造成资源泄漏,而且只有重新启动才能回收。 另外一些应用程序退出后Windows并不马上收回分配给它的系统资源,而是保持15分钟左右,到Windows完全肯定不再需要时才将它们收回,这可以看作是延时初始化的一种延伸。 用户使用“Ctrl+Alt+Del”强制性地关闭一些应用程序会造成资源泄漏,因此用户应该尽量使用应用程序本身的关闭功能退出应用程序,只有实在没办法时才使用这种关闭方法。因为这种强制关闭应用程序的方法往往只能关闭主程序,而不能关闭应用程序的一些子程序,因此会导致一些系统资源发生泄漏。 一些编写不善的应用程序会造成资源泄漏。一个应用程序在运行中往往会因出现意外而崩溃,若程序员在编写应用程序时没有考虑到这种意外情况的出现,并在应用程序中有相应的代码处理这种意外,那么当该应用程序非正常关闭后,该应用程序所占用的系统资源就不能由Windows收回。 还有一些应用程序,即使

      6、是正常关闭也不会释放它所占用的系统资源,这样的应用程序被程序员称为“垃圾”,计算机用户绝对不要使用这样的软件。 还有一些实际存在而微软也没有给予解释的情况。比如用户上网结束后关闭拨号网络中的网络连接,然后按Ctrl+Alt+Del看看,一定会发现有一个名为rnaap(英文版)或者rnaapp(中文版)的程序还在运行,这是什么东西?其实这是拨号网络用来拨通ISP的远程网络访问程序(Remote Network Access Application Program),在用户登录网络的时候这个程序被运行,但是在用户从网络注销后它本身并未退出。这不免让人产生这样一个疑问:在这样一个庞大的Windows系统中,到底还有多少这样那样的例外存在呢? 三、系统资源泄漏的对策关于系统资源泄漏的问题还有许多,由于篇幅所限,笔者只好省略掉对它们的详细分析和解释,而直接给出如何解系统的秘密决的结论。 1.准确地来讲,Windows中并不存在一个有着实际意义的系统资源。可用系统资源一定等于可用User资源和可用GDI资源中值较小的那一个。 2.Windows的可用User资源是根据所有User资源堆中可用空间最

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

      8、下降。当然,Windows 9X多任务管理机制的不完善也是造成这个问题的主要原因之一。 4.虽然可用系统资源的减少不会对系统的性能有任何影响,但是其值最好不要小于10%,小于此值带来的直接后果是可能不能再加载新的应用程序,而副作用是系统崩溃的可能性大大增加。 5.Windows本身也要占用系统资源,因此绝对没有哪个Windows用户的可用系统资源会是百分之百,要保持有更多的可用系统资源的方法是不要同时运行太多的应用程序。Windows和它的许多应用程序都有一个不经用户同意就自动加载东西的坏毛病,大家可以运行Msconfig.exe来关闭一些没有必要自动加载的应用程序,如ICQ、电子词典和超级解霸的自动播放伺服器等。 6.不要将系统资源和CPU资源(CPU使用率)相混淆,硬盘、光驱、软猫的数据处理、显卡的3D图像处理、声卡的3D音效处理占用的都是CPU时间(即消耗CPU资源),而不是系统资源,这些硬件设备的先进与否与占用系统资源的多少根本没有任何关系,可至今许多人还是将它们混为一谈。按习惯,谈到硬件的资源占用一般是指其CPU资源的占用,而软件的资源占用既包括CPU资源占用又包括系统资源(

      9、堆)占用,但计算机用户关心的一般是后者,因此谈到软件的资源占用时一般是指其对系统资源的占用。 最后说明一点,本文所提到的与系统资源有关的各种问题只适用于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等,以免它们驻留内存,在需要

      《系统资源泄漏的问题和对策.doc》由会员鲁**分享,可在线阅读,更多相关《系统资源泄漏的问题和对策.doc》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.