今天搜了一些关于浏览器假死的文章。现在很多浏览器,无论是各种内核的都在谈浏览器假死的事情。到底什么是假死呢?摘引一段文章,如下:
假死”、“防假死”是我们在使用浏览器的过程中提及次数非常多的两个词汇。那么,到底什么是“假死”,“防假死”的原理又是什么呢?今天就让我们来谈谈有关“假死”的话题。
首先从概念上来解释一下。传说中的浏览器假死如洪水猛兽,人人遇而避之,万不得已只得祭出任务管理器大法。最近“假死”这个词汇大有被妖魔化的趋势——其实没有那么多玄机。“假死”只是通俗的说法,比较准确的说法是,在网页装载或者运行的过程中,多种原因造成浏览器响应变慢,甚至无法操作的状态。所以,“假死”并不是一个特定的BUG,仅仅是复杂的网络环境造成的浏览器不稳定状态。
那么,假死是什么原因造成的?我们总结了这样几点:
1、网页代码比较复杂:
浏览器在处理过程中会占用大量的CPU使用率和内存、造成浏览器甚至电脑失去响应;
2、网页代码有bug:
大量个人网站和低质量网站代码的涌现造成对浏览标注的普遍不支持,浏览器渲染引擎在处理这些网页代码的时候会出错,比如陷入死循环等;
3、网页数据过多:
网页含有大量需要处理的数据,造成系统繁忙,如多图页面,超长页面等;
4、网页控件数据过多:
网页内嵌的各种控件会导致浏览器处理大量数据,造成系统繁忙。如Flash游戏,ActiveX控件等。
在以上情况下,如果浏览器框架设计未考虑多页面浏览的特殊性,资源共享访问时未做适当优化,就可能会造成整个浏览器因为单个页面的处理响应过慢而变慢。
紧接着,再看看防假死的技术都有哪些,也是从网络摘引的文章。
通常的防假死技术有哪些?各有何优劣呢?
1、多线程技术:
这种技术把网页放到独立的线程中执行,这种技术会使浏览器占用的系统资源相对较少。
2、多进程技术:
IE8、Chrome采用的技术,把页面放到独立的进程中执行。
@ 以上两种技术都是通过进程,线程模型来解决,对javascript等代码造成的假死效果比较好,但对于Flash等控件造成的假死效果不理想。
线程和进程有何区别?简而言之,一个程序占用一个进程,而每个进程中会有多个线程。一个进程中的线程可能会互相影响或影响整个进程,而不同的进程彼此之间就不会有太大影响。
对于以上技术,我了解的不多。以后将认真地跟下去,看看浏览器假死到底是什么个情况。