一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

【總結(jié)】網(wǎng)站令瀏覽器崩潰的原因

  面試某公司的時(shí)候,面試官問(wèn)到,導(dǎo)致瀏覽器崩潰的原因有哪些?愚輩不才,僅回答出了內(nèi)存泄漏。其實(shí)在網(wǎng)頁(yè)在裝載的過(guò)程中,常常由于種種原因使瀏覽器的反映變的很慢,或造成瀏覽器失去響應(yīng),甚至?xí)?dǎo)致機(jī)器無(wú)法進(jìn)行其他的操作。

  對(duì)于訪客,如果登錄您網(wǎng)站,瀏覽器就立刻崩潰,我想這對(duì)誰(shuí)都是無(wú)法容忍的,對(duì)此總結(jié)了網(wǎng)站導(dǎo)致瀏覽器崩潰的原因:

  1. 內(nèi)存泄漏

  還是先談下內(nèi)存泄漏,網(wǎng)站由于內(nèi)存泄漏的而照成崩潰有兩種情況,服務(wù)器的崩潰和瀏覽器的崩潰。內(nèi)存泄漏所造成的問(wèn)題是顯而易見(jiàn)的,它使得已分配的內(nèi)存的引用就會(huì)丟失,只要系統(tǒng)還在運(yùn)行中,則進(jìn)程就會(huì)一直使用該內(nèi)存。這樣的結(jié)果是,曾占用更多的內(nèi)存的程序會(huì)降低系統(tǒng)性能,直到機(jī)器完全停止工作,才會(huì)完全清空內(nèi)存。

  Apache的Web服務(wù)器是用C/C++編寫的,C/C++的內(nèi)存泄漏問(wèn)題不必多說(shuō),系統(tǒng)中存在無(wú)法回收的內(nèi)存,有時(shí)候會(huì)造成內(nèi)存不足或系統(tǒng)崩潰。在Java中,內(nèi)存泄漏就是存在一些被分配的可達(dá)而無(wú)用的對(duì)象,這些對(duì)象不會(huì)被GC所回收,然而它卻占用內(nèi)存。

  而在客戶端,JavaScript所造成的內(nèi)存泄漏,也將可能使得瀏覽器崩潰。關(guān)于JavaScript的內(nèi)存泄漏的文章,較權(quán)威的有《Memory leak patterns in JavaScript》和《Understanding and Solving InterNET Explorer Leak Patterns》。

  JavaScript 是一種垃圾收集式(garbage collector,GC)語(yǔ)言,這就是說(shuō),內(nèi)存是根據(jù)對(duì)象的創(chuàng)建分配給該對(duì)象的,并會(huì)在沒(méi)有對(duì)該對(duì)象的引用時(shí)由瀏覽器收回。再根據(jù)《Fabulous Adventures In Coding》一文的說(shuō)法:“JScript uses a nongenerational mark-and-sweep garbage collector.”,對(duì)” nongenerational mark-and-sweep”的可以這樣理解,瀏覽器處理JavaScript并非采用純粹的垃圾收集,還使用引用計(jì)數(shù)來(lái)為Native對(duì)象(例如Dom、ActiveX Object)處理內(nèi)存。

  在引用計(jì)數(shù)系統(tǒng),每個(gè)所引用的對(duì)象都會(huì)保留一個(gè)計(jì)數(shù),以獲悉有多少對(duì)象正在引用它。如果計(jì)數(shù)為零,該對(duì)象就會(huì)被銷毀,其占用的內(nèi)存也會(huì)返回給堆。 當(dāng)對(duì)象相互引用時(shí),就構(gòu)成循環(huán)引用,瀏覽器(IE6,F(xiàn)irefox2.0)對(duì)于純粹的JavaScript對(duì)象間的循環(huán)引用是可以正確處理的,但由于在引用計(jì)數(shù)系統(tǒng),相互引用的對(duì)象都不能被銷毀,因?yàn)槭且糜?jì)數(shù)永遠(yuǎn)不能為零,因此瀏覽器無(wú)法處理JavaScript與Native對(duì)象(例如Dom、ActiveX Object)之間循環(huán)引用。所以,當(dāng)我們出現(xiàn)Native對(duì)象與JavaScript對(duì)象間的循環(huán)引用時(shí),就會(huì)出現(xiàn)內(nèi)存泄漏的問(wèn)題。

  簡(jiǎn)單來(lái)說(shuō)就是,瀏覽器使用引用計(jì)數(shù)來(lái)為Native對(duì)象處理內(nèi)存,而引用計(jì)數(shù)的對(duì)象無(wú)法被銷毀,涉及Native對(duì)象的循環(huán)引用將會(huì)出現(xiàn)內(nèi)存泄漏。配合下面的例子,理解這句話,基本上就可以理解JavaScript造成的內(nèi)存泄漏了。

var obj;
window.onload
= function(){
// JavaScript對(duì)象obj到DOM對(duì)象的引用,根據(jù)id獲得
obj=document.getElementById("DivElement");
  // DOM 對(duì)象則有到此 JavaScript 對(duì)象的引用,由expandoProperty實(shí)現(xiàn)
  document.getElementById("DivElement").expandoProperty=obj;
};

it知識(shí)庫(kù)【總結(jié)】網(wǎng)站令瀏覽器崩潰的原因,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国内外成人在线视频 | 亚洲综合第一页 | 国产成人黄色 | 国产成人亚洲综合欧美一部 | 亚洲第一黄色网址 | 美女无遮挡免费视频 | 亚洲免费h | 黄色影片在线免费观看 | 亚洲欧洲国产经精品香蕉网 | 美女扒开内衣看个够网站 | 视色4se在线视频播放 | 成人午夜精品视频在线观看 | 一本色道久久综合一区 | 一区二区三区四区视频在线 | 94欧美setu | 97人人干 | 日韩中文字幕亚洲无线码 | 91一区二区三区 | 黄色在线视频网站 | 久久免费精品国产72精品剧情 | 亚洲一区日韩一区欧美一区a | 欧美精品亚洲精品日韩专区 | 玖玖国产精品 | 亚洲成人在线免费观看 | 五月激情婷婷丁香 | 一本久道久久综合 | 91精品国产三级在线观看 | 日本一区二区三区久久 | 亚洲一区中文字幕在线 | 国产小视频网址 | 国产乱人伦精品一区二区 | 午夜视频网站 | 欧美激情在线免费 | ssswww免费久久| 亚洲图片欧美在线 | 日韩三级久久 | 国产原创中文字幕 | 在线观看精品视频一区二区三区 | 色啪视频| 国内精自线一二三四2021小说 | 亚洲一区二区三区四区在线 |