系统资源丢失的问题及解决方法

系统资源丢失的问题及解决方法

ID:5943564

大小:23.84 KB

页数:9页

时间:2017-12-29

系统资源丢失的问题及解决方法_第1页
系统资源丢失的问题及解决方法_第2页
系统资源丢失的问题及解决方法_第3页
系统资源丢失的问题及解决方法_第4页
系统资源丢失的问题及解决方法_第5页
资源描述:

《系统资源丢失的问题及解决方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、系统资源谈到Windows时,有一个必说的话题--系统资源(SystemResource),但系统资源到底是什么,有人说是指CPU,有人说是指硬盘空间,有人说是指内存……当应用程序在Windows中运行时,Windows必须实时“跟踪”该应用程序的运行,并保留与之相关的许多信息,如按钮、光标、菜单的位置和位图、窗口的状况等,这些信息由Windows保留在一种叫堆的内存块中,堆的英文为Heap。简单地说,堆是采用特殊机制管理的内存块。由Windows的一个系统内核User.exe管理的堆叫作User资源堆(Us

2、erResourceHeap),由另一个系统内核Gdi.exe管理的堆叫作GDI资源堆(GraphicalDeviceInterfaceResourceHeap,简称GDIResourceHeap),User资源堆和GDI资源堆合称为系统资源堆(SystemResourceHeap),习惯上就把它们叫作系统资源(SystemResource)。微软将Windows的系统资源(堆)分为五个堆,其中User资源堆为三个,而GDI资源堆为两个。三个User资源堆分别是:16位的用户堆(UserHeap,64KB);32

3、位的窗口堆(WindowsHeap,2MB);32位的用户菜单堆(UserMenuHeap,2MB)。两个GDI资源堆分别是:16位的GDI堆(GDIHeap,64KB);32位的GDI堆(GDI,2MB)。从这里的系统资源分类和大小我们应该明白,不管CPU是P4还是486,内存是8M还是1G,所有Windows的用户都拥有同样大小的系统资源(堆),用户不能自己增加或减少系统资源的大小,这是由操作系统决定的,与硬件档次没有任何关系。Windows的User资源堆和GDI资源堆的可用(Free)空间称为可用User

4、资源和可用GDI资源,Windows中以百分数表示它们,用户可以选择“开始/附件/系统工具/资源状况”(见图),来实时查看它们的大小。注意,“资源状况”不是Windows的默认安装组件,使用典型安装的用户需自己添加上去。二、为什么可用系统资源不断减少当一个应用程序在Windows中被加载时,Windows自动地将可用User资源堆和可用GDI资源堆中的一部分空间分配给它,而当应用程序退出时,这部分空间也应该由Windows收回以交给别的应用程序使用。但实际上几乎所有的Windows用户都发现:一个应用程序加载前和

5、退出后可用系统资源的值是不相等的,而且随着应用程序的不断加载和退出,随着Windows使用时间的增加,附图中资源状况显示的可用系统资源也在不断减少。微软的正式解释是:*系统初始化Windows在启动时要进行系统初始化(SystemInitialization)的过程,Windows的系统初始化属于延时初始化。例如,Windows在启动时只初始化当前使用的字体,以后当应用程序要使用到尚未被初始化的字体时,Windows才会初始化该字体,这种由应用程序根据需要提出要求而发生的初始化服务就是所谓的延时初始化。对于属于延

6、时初始化的服务,Windows还采用了特别的管理方式,当向Windows提出延时初始化服务的应用程序退出后,与延时初始化服务相关的系统资源(例如上面提到的与新字体有关的系统资源)不会随着应用程序的退出而马上释放,这是造成应用程序加载前和退出后可用系统资源的值不相等的原因之一。Windows不马上收回与延时初始化服务,是为了防止该应用程序或别的应用程序以后又向系统提出同样的初始化服务而导致系统不断重复服务而浪费时间。例如对于加载同一应用程序,第二次加载的时间会明显少于第一次,显然延时初始化功不可没。*兼容性在Win

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

8、s的设计目的之一。但是许多程序员在实际工作中还发现在其他一些情况下Windows也会不能完全收回系统资源,这也导致可用系统资源不断减少,程序员们称这种现象为资源丢失(ResourceLeak)。微软开始并未承认,但是随着证据的不断增加,最后还是不得不承认其中的一些现象是存在的。比如一个程序还未完成其加载过程时(即还没有启动完毕)就关闭它会造成资源丢失,而且只有重新启动才能

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。