打印本文 打印本文  关闭窗口 关闭窗口  
浏览器为什么会假死?
时间:2011/10/16 18:21:18

传说中的浏览器假死如洪水猛兽,人人遇而避之,万不得已只得祭出任务管理器大法。最近“假死”这个词汇大有被妖魔化的趋势——其实没有那么多玄机。“假死”只是通俗的说法,比较准确的说法是,在网页装载或者运行的过程中,多种原因造成浏览器响应变慢,甚至无法操作的状态。所以,“假死”并不是一个特定的BUG,仅仅是复杂的网络环境造成的浏览器不稳定状态。

假死产生的原因

1、网页代码比较复杂

浏览器在处理过程中会占用大量的CPU使用率和内存、造成浏览器甚至电脑失去响应;

2、网页代码有漏洞

大量个人网站和低质量网站代码的涌现造成对浏览标注的普遍不支持,浏览器渲染引擎在处理这些网页代码的时候会出错,比如陷入死循环等;

3、网页数据过多

网页含有大量需要处理的数据,造成系统繁忙,如多图页面,超长页面等;

4、网页控件数据过多

网页内嵌的各种控件会导致浏览器处理大量数据,造成系统繁忙。如Flash游戏,ActiveX控件等。

在以上情况下,如果浏览器框架设计未考虑多页面浏览的特殊性,资源共享访问时未做适当优化,就可能会造成整个浏览器因为单个页面的处理响应过慢而变慢。

5、浏览器内核被破坏

当浏览器被篡改后可能会导致假死

6、使用了多个安全工具

多个安全工具同时注入浏览器进程很可能导致页面崩溃。

7、安装了错误的补丁

使用管家软件打补丁时打了不适合系统的补丁会导致频发假死、崩溃现象。

为防止此类现象,建议用360安全卫士打补丁,360安全中心每次发布补丁都会测试。

防假死技术及其优劣

1、多线程技术

这种技术把网页放到独立的线程中执行,如Maxthon2.5.1之前的版本。这种技术会使浏览器占用的系统资源相对较少。

2、多进程技术

IE8、Chrome采用的技术,把页面放到独立的进程中执行。

以上两种技术都是通过进程,线程模型来解决,对javascript等代码造成的假死效果比较好,但对于Flash等控件造成的假死效果不理想。

线程和进程有何区别?简而言之,一个程序占用一个进程,而每个进程中会有多个线程。一个进程中的线程可能会互相影响或影响整个进程,而不同的进程彼此之间就不会有太大影响。