2008年8月11日 星期一

Firefox 停止对内存的攫取

停止对内存的攫取


    如果你不知道究竟哪些东西在运行的话,Windows版的Firefox的默认方式消耗内存是惊人的。人们通常会发现,在一些窗口或标签页打开时,内存会被消耗掉75 MB到100 MB甚至更多,而他们则认为内存泄漏需要负上责任。虽然早先版本的Firefox也有内存泄漏的bug,但在Firefox 2.x版本中,它则不应是如此大量内存消耗的原因。


    其实真正的原因是这样的:Firefox会对最近使用过的对象进行缓存,包括网页、图像,而它们都被缓存在内存中,这样它们在重新提交时就能够很快地出现在屏幕上,这就导致了内存占用量的上升。以下的一些技巧能够让Firefox对内存不那么具有侵略性。当然,减轻内存负担就可能会让你再次载入之前页面的时候更为缓慢一些。


    减少对图像的缓存


    当布尔项browser.cache.memory.enable启用的时候,也就是默认情况下,Firefox则会将当前浏览到的网页中所有的图像元素复制到内存中,以让页面更快地提交。你可以将其值设置为false来降低内存占用,但历史纪录中的页面重新载入时就会稍微慢一些。


    另一种办法:将其值设置为true并创建一个新的整数项,名叫browser.cache.memory.capacity。接着以千字节为单位,指定内存为图像缓存的留出量。这样你既能够享受到图像缓存所提供的速度又无须耗费巨大的内存占用。如果你使用-1作为内存的值,Firefox则会根据你的物理内存大小自行分配内存缓存。


    减少对网页的缓存


    Firefox会将一些最近访问的页面缓存在内存中,这样当你按下“后退”或“前进”时就不需要重新生成页面。整数项browser.sessionhistory.max_total_viewers则决定了存储在后退/前进缓存中的网页数;每个页面则大约占用4 MB的内存。


    在默认情况下,其值被设置为-1,这样就是根据你的物理内存大小来进行分配;当你使用-1值时,存储页面的最大数量为8。将值设置为0则是完全禁用页面缓存。这能够节约内存使用,但会在你后退或前进导航时速度有些变慢。


    要注意的是,这项缓存并不与browser.cache.memory.enable一样,那项设置是用来控制提交页面中像图像和按钮这样的组件以及http编码方式的页面内容的,而这项设置则是缓存已经被提交的页面中的文本内容。


    当最小化时用磁盘空间换内存空间(仅在Windows中可用)


    在Firefox中有一个鲜为人知的功能就是,Windows内存管理器能够在Firefox最小化但没有关闭时用磁盘空间换出一些Firefox的物理内存占用。这样能够让其它的程序使用到Firefox之前所占用的物理内存。


    但在默认情况下,这项功能是关闭的,有两个原因:1)计算机内存通常都比使用量要多得多,因此如果平时都能够使用并不是非常有意义;2)将Firefox的内存占用换出到硬盘空间,当其还原大小时可能会让程序运行变得缓慢。


    这也就是说,如果你在运行Firefox时也运行一些对内存需求非常大的应用程序,这项功能也许就能够帮助你在它们之间进行权衡。要启用这项功能,可以创建一个名叫config.trim_on_minimize的布尔项并将其值设置为true。

0 评论: