在新一代的浏览器大战中,斗得难分难解的正是Firefox和Chrome,Chrome的问题是个人资讯有机会被收集,Firefox的问题是使用的记忆体比较多。这方面Firefox团队已经开始密谋对策了,专责处理Firefox记忆体用量的MemShrink,最近就向用户发表了成果报告。
Firefox记忆体用量较多的问题,早在2.0的时候已经出现。Firefox 3一度作出了改良,但Firefox 4因为追加了很多新功能,令记忆体的使用量次増加,不少用户(包括笔者)都抱怨记忆体用得太多。为了彻底解决这问题,Mozilla成立了新项目MemShrink,目标是提升Firefox性能和减少资源的使用量。MemShrink由成立到现在已经半年了,究竟有些什么成果?
这次的Notes on Reducing Firefox’s Memory Consumption正是显示MemShrink工作成果和今后课题的资料,MemShrink在每个星期都会发表有关的成果,但这次却是MemShrink成立以来发布的最详细资料,因此受到大家的注意。报告首先介绍了Firefox 4记忆体使用量增加的原因,原因主要有三个,首先是JavaScript引擎JaegerMonkey消耗的资源较多,负责释放未使用资源的Garbage Collection动作判定迟缓,令没有执行释放资源动作的分页较多。Firefox的使用者大概对Firefox 4时速度有大幅提升有很深印象,这是因为使用了jm-fatvals,后来fatvals更32位元改为64位元支援,虽然令处理速度更快,但同时亦增加了资源的使用量。
图像展开处理同时进行亦是问题发生的原因。在后台载入中的所有分页图像,都比分页本身更早载入,是以后来便改为只载入当前分页的图像,其他分页的图像在经过指定时间后将自动被删除。最后一个原因是新的HTML5 Parser的臭虫,令innerHTML设定时无用的资讯占用记忆体(Memory Leak)。
MemShrink团队认为首必须让用户掌握正确的记忆体使用量,是以改良了在网址栏输入about:memory时所显示的内容。一直以来Firefox采用了jemalloc来“霸占”记忆体,jemalloc为了提高Firefox的执行速度,往往有“霸占”更多记忆体的倾向。MemShrink把此等占用资源的动作减至最少,结果令Firefox 7比Firefox 6减少使用记忆体达20%到30%、Firefox 8比Firefox 7减少14%记体量使用量、Firefox 9比Firefox 7减少30%记体量使用量。未来会着手改善JavaScript在记忆体释放上的处理效率,及针对不同作业系统改变记忆的处理方式,可望再与Google Chrome一争长短。
本網站所有文章除特別註明外均為原創,歡迎轉載,轉載時請註明文章來自Linuxpilot,作者為Kenneth Mak,並附上原文鏈結。