大早上看Bloglines,就看到
Keso的Firefox出了问题。还挺厉害的问题,前所未见。一般出问题也就是浏览某些网页挂掉,装扩展出错了在窗口下面占一片位置写几个红字,当然最大的问题是内存占用太大,比如有人说1G的内存能占到800多MB。
像这种界面乱掉的,我怀疑还是什么扩展修改了XUL的脚本吧(不懂,胡想的:P)。正如文中所说,可以用安全模式启动,然后是一个新的样子。这基本就可以确定是扩展引起的问题了,并且是一个可修改这些菜单栏或是工具栏的扩展。Firefox提供了更大灵活性,也就有引发问题的潜力。
暂时来说,只能埋怨开发者,扩展的或是Firefox的。或者有力量的话,应该尽量定位一下问题,向相关人士汇报Bug。回头来说,也可以说Firefox容错能力不够。但这我可以理解,作为一种爱好性质的开发,或者处在一个相对友好的环境内(比如开源界),对一些错误是会不在意的,他心里认为相关的一切都应该是有序的,是在互相协议之内的。比如Thunderbird自动转发消息时碰到没编码的中文标题就直接挂掉,能说他们不会做这个检测吗?没有处理办法吗?绝不是,因为手工转发时它完全能处理得了。只是这段程序的开发者一时没意识到这个问题的存在,而只是实现了Email规范里规定的作法。
这一点当然微软有经验,比如IE可以解释 is a space?(空格,但没有带分号),把它显示成空格,而Firefox就老实地认为它只是一个普通的字符串。微软应该有它的理由,因为确实有asp程序员这么干(只见过一次,还是写在asp里面的,一个GRE站点)。Fx也有理由,因为这不合规范。
再说内存问题,
以前说过已经有开发者在处理这方面的问题,因为确实有内存泄露的事情存在,但正如主力开发人员
Ben Godger所说的,内存泄露不是这么容易看出来的,问题的关键是1.5里面所采用的Cache技术,它可以在内存中缓存几个已经计算好的页面,当你按下前进、后退按钮时就会非常快的显示出来。这个页面个数最多8个,然后按内存多少,256时3个,512时5个。
这个算法我认为有问题,因为它只是计算了个数,而不是内存的容量。我曾经看过一个页面,它显示后要占用130MB左右的内存,存下来足有8MB那么大。通常我不会看这种页面,但我相信这种类型的页面绝非少见,国内就有许多页面非常变态地长,并且加许多图,动画和Flash,还有加声音的。这些东西要显示出来都是要占用内存的。
所以如果看这种页面多的话,不如到about:config里面把 browser.sessionhistory.max_total_viewers 设成0,就是一个也不缓存。当然照我上篇文章中所引用的那几个内存相关网址,做其他一些调整。
还有就是绝不要装信不过的扩展,除非做好了当小白鼠的准备。当然,真要装错了,就用安全模式启动(firefox --safe-mode),试着到扩展管理窗口中删掉那个扩展看看。如果这个不行,就新建一个profile(firefox -p,启动Profile管理器)试一下,这也相当于一个全新的Firefox了。
Bookmark是一个文件,这可以方便地备份;如果你已经喜欢使用Delicious,并且可以记得日常网址,这个Bookmark也不是很必要;扩展要丢掉时办法不多,只好再装,但一些设置应该保留下来,比如Adblock的规则,这可以导出存在Gmail信箱去。