Board logo

标题: 内存管理么?有让浏览器具备内存清理功能的朋友们来看看 [打印本页]

作者: 山水人天    时间: 2006-5-21 09:33     标题: 内存管理么?有让浏览器具备内存清理功能的朋友们来看看

看到了一些讨论,老人们对这个功能不在乎,新人们希望tw更加强大。正好我是学计算机的,对windows的内存管理还做过一些小小的研究,所以想向大家尽量通俗的介绍一下,让大家自己来判断此功能的适用程度。

过于基本的概念我就不说了,有一点需要说明,windows使用的是不是像linux一样的页面管理,他的内存虽然也有页面,但是真正宏观上的属于区块管理。也就是将内存分割为大小一样的区块,而区块之内的管理则是页面管理。

分析内存管理和清理功能,有一个概念是绝对不能忽视的,那就是window中的动态链接库。在系统中命名规则为*.dll 它记录的是系统或软件(其实系统也是软件)在运行中所有需要的运行函数。软件如果很小的话,是不需要动态链接库的。但是如果软件比较复杂,那么就意味着他所用到的函数很多,如果纯粹靠内存链表机制(这种东西是程序员设计的,将函数直接放到程序所在的内存空间中)会让整个软件的运行效率极大降低,这个时候,就需要有动态链接库。动态链接库事实上是.exe文件的一个扩展,由.exe文件调用,好处就是可以将函数与程序存放于不同的内存空间,而调用的花销仅仅是内存之间的链表切换而已。这样的文字可能比较晦涩,我来举一个例子。这就好像在公司中的材料越来越多,原来的量堆在办公室角落里就可以了,但是现在公司发展了,办公室里堆不下那些材料了,需要使用一个库房来专门的堆放材料。这里的公司就是.exe文件,办公室就是.exe的本身空间,而库房就是我们的.dll文件。

所谓的内存管理,就是将内存中不常用的(windows有自己的计时管理,用来判断内存中内容的使用频率)文件和程序块转移到高地址段或虚拟内存中,而将低地址段留给常用的程序并将常用的内存内容转移过来 (这样安排是因为地址段靠近总线,访问速度快)。

所谓内存清理,就是将不需要的内存打上释放标签,再使用内存的时候就可以使用这些内存。另一种方法是将不常用的dll文件转移到虚拟内存中,空闲出物理内存来。

过度频繁的整理和清理内存是有坏处的,因为每一次整理或清理都是内存上的移动操作,必须重建链接表,重建内存指针,这是一项相当消耗内存和cpu资源的工作。而且如果一旦这个时候程序启动,那么会造成程序上各种莫名其妙的错误,严重的还会使系统崩溃。而且我还有一个经验,那就是不管是什么程序,在整理和清理内存之后,都可能会或多或少的出现内存泄露的情况,这是因为内存毕竟是电气设备,强制移动会造成一些内存的内容来不及释放,在后续扫描的时候,就有可能将这些没有释放的内存归入进程(windows仍然认为其在使用中)。

写的很乱,将就看吧。希望能了解我的中心思想就好
作者: renior    时间: 2006-5-21 11:34

因此,我不建议加入这个没有用的功能啊
作者: 靖哥哥    时间: 2006-5-21 13:54

呵呵,山水表达的意思很明确.
作者: sbyguli    时间: 2006-5-23 09:54

唔..真的有这样的感觉.不过觉得如果玩大型的游戏退出来后运行下.有那么一点点的快.
作者: laimama    时间: 2006-5-23 21:12

呵呵,一直就反对加入这一功能!有很多朋友不了解,还以为那是
很了不起的功能,其实在编程时一个API函数就搞定,MS在MSDN中
也说明了不建议使用。
作者: caten    时间: 2006-5-23 22:10

以前TT上最先用这个技术  然后MT还出来象我们现在这样解释  结果最后还是加了~~呵呵~~~~看来是趋势啊~~
作者: pinguo    时间: 2006-5-23 22:40

我觉得还是加上的为好!退出或者最小化TW之后,清理一下内存。
作者: farmer_CHS    时间: 2006-5-24 10:20

内存管理的好坏是不是跟算法有直接的关系呢?
作者: 山水人天    时间: 2006-5-24 18:22

回楼上的  算法已经固定,没有选择的权利。对于内存的管理安全性和完整性为重,速度为次




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/) Powered by Discuz! 7.2