国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

網站導致瀏覽器崩潰的原因總結(多款瀏覽器) 推薦

2024-05-06 14:10:31
字體:
來源:轉載
供稿:網友
面試某公司的時候,面試官問到,導致瀏覽器崩潰的原因有哪些?愚輩不才,僅回答出了內存泄漏。其實在網頁在裝載的過程中,常常由于種種原因使瀏覽器的反映變的很慢,或造成瀏覽器失去響應,甚至會導致機器無法進行其他的操作。

  對于訪客,如果登錄您網站,瀏覽器就立刻崩潰,我想這對誰都是無法容忍的,對此總結了網站導致瀏覽器崩潰的原因:

1. 內存泄漏

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

  Apache的Web服務器是用C/C++編寫的,C/C++的內存泄漏問題不必多說,系統中存在無法回收的內存,有時候會造成內存不足或系統崩潰。在Java中,內存泄漏就是存在一些被分配的可達而無用的對象,這些對象不會被GC所回收,然而它卻占用內存。

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

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

  在引用計數系統,每個所引用的對象都會保留一個計數,以獲悉有多少對象正在引用它。如果計數為零,該對象就會被銷毀,其占用的內存也會返回給堆。 當對象相互引用時,就構成循環引用,瀏覽器(IE6,Firefox2.0)對于純粹的JavaScript對象間的循環引用是可以正確處理的,但由于在引用計數系統,相互引用的對象都不能被銷毀,因為是引用計數永遠不能為零,因此瀏覽器無法處理JavaScript與Native對象(例如Dom、ActiveX Object)之間循環引用。所以,當我們出現Native對象與JavaScript對象間的循環引用時,就會出現內存泄漏的問題。

  簡單來說就是,瀏覽器使用引用計數來為Native對象處理內存,而引用計數的對象無法被銷毀,涉及Native對象的循環引用將會出現內存泄漏。配合下面的例子,理解這句話,基本上就可以理解JavaScript造成的內存泄漏了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 兴化市| 铁岭县| 柳州市| 油尖旺区| 赤城县| 赤城县| 海阳市| 七台河市| 简阳市| 云南省| 新疆| 驻马店市| 安宁市| 海丰县| 资源县| 上栗县| 铅山县| 郑州市| 宜丰县| 怀宁县| 临汾市| 丹阳市| 正镶白旗| 集安市| 阿克陶县| 禄丰县| 丰县| 富川| 建始县| 阜宁县| 涟源市| 桦川县| 毕节市| 黔西| 浮梁县| 三台县| 锦屏县| 砚山县| 扶风县| 佛坪县| 正安县|