理解Windows内存

| |
2005/04/02 17:38 zhangyu
什么是自由内存
Windows3.1x程序管理器显示一个叫做自由内存的数值。要看这个数值,你可以从程序管理器中的帮助菜单选择AboutWindows。不幸的是,自由内存的数量与我们前面讨论的东西并不直接相关。自由内存大约是以下内存的和:
可使用的物理内存
虚拟内存交换文件的没使用部分
可弃内存
一些Windows应用程序需要它们分配(或预订)的线性内存(或房间)即时与物理内存关联。它们或许还需要给它们的物理内存永远不被交换到虚拟内存交换文件。这通常是为了性能的原因,有时是因为内存的内容被即时用于处理一些外部事件。例如,如果你通过modem连接到一个在线服务,例如你的因特网服务提供商(ISP),你不会希望这部分处理通信的程序交换到磁盘。如果这发生了,把磁盘读回物理内存或许会用很长时间,在这期间一些信息或许会丢失。
锁定内存
为了防止类似上述的问题,例如时间敏感的信息被意外地丢失延迟,Windows允许应用程序锁定线性内存的范围。这迫使物理内存(RAM)即时关联到线性内存范围,并防止线性内存范围被交换到虚拟内存交换文件(房间被锁住了,所以RAM不能走出),即使物理内存没被使用一些时间。当你退出一个锁定了一段线性内存范围的应用程序时,或者当应用程序认为它合适的任何时候,应用程序能释放线性内存。
可弃内存
Windows3.1x和Windows95/98应用程序被分为多个叫做段的小部分。组成一个Windows应用程序的各个段的大小和内容是不同的,它们主要被开发这个程序的程序员指定了。
为了给286系统提供内存管理,也为了处理没有足够磁盘空间给虚拟内存交换文件的情况,Windows使用下面辅助的内存管理方案:
当Windows应用程序开发时,作为开发过程的一部分,程序员必须指出,是否组成Windows应用程序的每一个段是可弃的。当Windows用完了物理内存和交换文件中可用的虚拟内存时,Windows就搜索标记为可弃的应用程序段。然后被这些可弃段占用的线性内存范围就被完全释放,而线性内存段的内容就被丢弃。当Windows决定丢弃什么段时,它不考虑一个段是不是‘最长时间没使用’。而且即使Windows仅仅需要附加4K内存,它也丢弃整个段(这个段或者有64K大)。当可弃段的内容又被需要时,
它们被从包含整个应用程序的.EXE或.DLL文件中重新装载。因为Windows不考虑可弃段被重新需要的可能性,可弃段不久又被需要的可能性增加了。
Tags: ,
电脑网络 | 评论(0) | 引用(0) | 阅读(773)
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]