终于实现了多处理!
虽然Chrome浏览器没有完全解决内存尺寸问题,但是,它通过减少碎片来控制这个问题。在传统的浏览器中,浏览器为一个线程分配一套虚拟内存。当然,每一个标签都占用这个总内存集中的一个内存块。随着你打开更多的标签,系统将分配更多的内存。但是,在你关闭标签的时候,内存没有完全恢复,不足以运行未来的标签。你最终将遇到标准的内存碎片问题。
但是,在Chrome浏览器中,每一个标签都有自己的线程。你没有看错,不是每一个Chrome的窗口,而是每一个标签。Cogswell说,我做了20多年的开发工作。我从来没有看到一个窗口能够托管多个线程。但是,Chrome浏览器确实做到了。
Cogswell说,如果我目前的标签上有一个网页,我在地址栏输入一个新的URL地址的时候,与那个网页有关的chrome.exe命令请求就关闭了,并且开始一个新的chrome.exe命令请求。这样做是很完美的:不用输入命令清除分配给已经关闭的网页的内存,Chrome浏览器将完全消除整个线程,然后开始一个新的线程。这是Chrome浏览器阻止内存碎片以及保护和隔离每一个网页的又一种方法。
更有趣的是在我装载雅虎网站www.yahoo.com的时候发现了一个奇怪的现象。我看到启动了两个线程。但是,对于谷歌搜索引擎www.google.com那种比较小的网页,我仅看到了一个流程。当我查看命令行的时候我发现原来输入命令行参数设置了一个插件。那是一个叫做插件路径的额外的参数,设置是c:\windows\system32\macromed\flash\npswf32.dll,那是Flash播放器。
Chrome为嵌入在网页的Flash播放器启动了另一个线程。当我在Chrome浏览器中保持雅虎网页处于打开状态并且关闭分配给Flash播放器的线程的时候,Chrome在雅虎网页上面显示一个提示并且用一个Flash标识取代了那个Flash窗口,Flash标识上面有一个失望的面孔。见图1。
可以肯定的是雅虎的网页仍然可以使用。换句话说,一个插件崩溃了不会造成浏览器崩溃。对于一次只喜欢打开少量标签的用户来说,这是很好的。为了保证测试的完整性,测试人员关闭了雅虎网页的线程。这一次,整个网页都变黑了,并且网页上有一个失望的表情和信息。见图2
同时,其它网页仍在运行。实际上,Chrome浏览器有自己的任务管理器。当在Chrome浏览器中的时候,按下Shift+Esc键可以打开这个任务管理器。这个任务管理器甚至能够让你关闭Chrome浏览器中的线程。
渲染引擎
编写浏览器软件最困难的部分是渲染引擎。谷歌在这方面做出了正确的选择。谷歌没有重头开始编写渲染引擎,而是选择成熟的和拥有许多优秀功能的现有的开源软件渲染引擎。谷歌选择的是WebKit。有趣的是WebKit是由苹果开发的。苹果自己开发的这个渲染引擎作为其Safari浏览器的基础,然后开放了这个引擎的源代码。现在,谷歌选择了WebKit。
这就意味着谷歌Chrome浏览器的渲染引擎没有瑕疵和速度问题。这个渲染引擎速度快并且很好用。测试人员还在chrome浏览器中直接打开了一个SVG(可缩放矢量图形)文件,并且运行得很好。这是很有趣的。因为包括微软和Adobe在内的业内各种力量都在排斥SVG,迫使许多人放弃了SVG的开发。很难说谷歌chrome浏览器会对SVG领域有什么影响。另外,许多人说chrome浏览器的SVG不支持动画。这是一个主要缺陷。我们期待着谷歌解决这个问题。
本文来源:计世网 作者:佚名