网站导致浏览器崩溃的原因总结(多款浏览器) 推荐_javascript技巧
对于访客,如果登录您网站,浏览器就立刻崩溃,我想这对谁都是无法容忍的,对此总结了网站导致浏览器崩溃的原因:
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造成的内存泄漏了。
var obj;
window.onload = function(){
// JavaScript对象obj到DOM对象的引用,根据id获得
obj=document.getElementById("DivElement");
// DOM 对象则有到此 JavaScript 对象的引用,由expandoProperty实现
document.getElementById("DivElement").expandoProperty=obj;
};
可见,JavaScript 对象和 DOM 对象间就产生了一个循环引用。由于 DOM 对象是通过引用计数管理的,所以两个对象将都不能销毁。
另一种情况是闭包中,当碰到闭包,我们在Native对象上绑定事件响应代码时,很容易制造出Closure Memory Leak。其关键原因和前者是一样的,也是一个跨JavaScript对象和Native对象的循环引用。只是代码更为隐蔽。
window.onload = function AttachEvents(element){
//element有个引用指向函数ClickEventHandler()
element.attachEvent( " onclick " , ClickEventHandler);
function ClickEventHandler(){
//该函数有个引用指向AttachEvents(element)调用Scope,
//也就是执行了参数element。
}
}
这里简单理解了JavaScript造成内存泄漏的原因,内存泄漏加大浏览器的负担,很有可能导致浏览器崩溃,我们要做的就是尽量去避免这种情况,做法可参考刚刚所说《Memory leak patterns in JavaScript》和《Understanding and Solving Internet Explorer Leak Patterns》两篇文章加以理解。处理JavaScript内存泄漏最终目的还是要打破JavaScript对象和Native对象间的循环引用或者清零引用计数,释放对象。
一些内存泄漏如闭包内存泄漏,我们可能比较难以发现,内存泄漏的检测我们可能参考《javascript 内存泄露工具使用》。
2. 网页代码复杂和浏览器bug
大量个人网站和低质量网站代码的涌现造成对浏览标准的普遍不支持,如果正好碰上浏览器存在的一些bug,浏览器渲染引擎在处理这些网页代码的时候会出错,比如陷入死循环或直接崩溃等。
HTML代码导致网站崩溃
这是HTML结构错误而导致IE6的崩溃,在
BR>"http://www.w3.org/TR/html4/loose.dtd">

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

學c語言的網站:1、C語言中文網;2、菜鳥教學;3、C語言論壇;4、C語言帝國;5、腳本之家;6、天極網;7、紅黑聯盟;8、51自學網;9、力扣;10、C Programming。詳細介紹:1、C語言中文網,這是一個專門為初學者提供C語言學習資料的網站,內容豐富,包括基礎語法、指針、數組、函數、結構體等多個模組;2、菜鳥教程,這是一個綜合性的程式設計學習網站等等。

您是否每天在大約相同的時間頻繁地造訪同一網站?這可能會導致花費大量時間打開多個瀏覽器選項卡,並在執行日常任務時使瀏覽器充滿混亂。好吧,打開它而不必手動啟動瀏覽器怎麼樣?這非常簡單,不需要您下載任何第三方應用程序,如下所示。如何設定任務計劃程序以開啟網站?按鍵,在搜尋框中鍵入任務計劃程序,然後按一下開啟。 Windows在右側側邊欄上,按一下「建立基本任務」選項。在名稱欄位中,輸入要開啟的網站的名稱,然後按一下下一步。接下來,在觸發器下,按一下時間頻率並點擊下一步。選擇您希望活動重複多長時間並點擊下一步。選擇啟

在macOSSonoma和Safari17中,您可以將網站變成“網頁應用程式”,這些應用程式可以位於Mac的擴充座中,並且可以像任何其他應用程式一樣訪問,而無需打開瀏覽器。繼續閱讀以了解其工作原理。多虧了Apple的Safari瀏覽器中的新選項,現在可以將您經常訪問的互聯網上的任何網站變成一個獨立的“網絡應用程序”,位於Mac的擴展塢中,隨時供您訪問。 Web應用程式與任何應用程式一樣與任務控制和舞台管理器配合使用,也可以透過Launchpad或SpotlightSearch開啟。如何將任何網站改變

有時,基於多種原因,我們希望在MicrosoftEdge上封鎖某些網站,無論是出於家長控制,時間管理,內容過濾,甚至是安全問題。一個常見的動機是提高生產力並保持專注。透過阻止分散注意力的網站,人們可以創造一個有利於工作或學習的環境,最大限度地減少潛在的干擾。最後,內容過濾對於維護安全和尊重的線上環境非常重要。阻止包含露骨、冒犯性或令人反感內容的網站在教育或專業環境中尤其重要,在這些環境中,維護適當的標準和價值觀至關重要。如果您可以與這種情況相關,那麼本文適合您。以下介紹如何在Edge中封鎖對網

解決Python網站存取速度問題,使用索引、快取等資料庫最佳化方法在開發維護Python網站的過程中,經常會遇到網站存取速度慢的問題。為了提高網站的回應速度,我們可以使用一些資料庫優化方法,如索引和快取。本文將介紹如何使用這些方法來解決Python網站存取速度問題,並提供相應的程式碼範例供參考。一、使用索引優化資料庫查詢索引是資料庫中資料的快速查找結構,可以大

預設情況下,大多數iPhone用戶在iPhone上使用Safari瀏覽器。他們在Safari瀏覽器上瀏覽和造訪不同類型的網站。一些iPhone用戶報告說,他們厭倦了在iPhone上啟動Safari瀏覽器後在初始螢幕上看到經常訪問的網站。為了更改初始螢幕的外觀,您應該對其進行編輯。如果您希望從Safari瀏覽器中刪除經常造訪的網站,我們在這裡提供一些簡單的步驟,以解釋如何輕鬆做到這一點。如何從iPhone的Safari中刪除經常造訪的網站步驟1:您應該先在iPhone上啟動Safari瀏覽器。第2

快速解決Go語言網站訪問速度問題的7種有效方法隨著互聯網的快速發展,網站訪問速度對於用戶體驗至關重要。 Go語言作為一種高效能效能的程式語言,其在建立高並發網路應用方面有著廣泛應用。然而,在實際開發中,我們可能會遇到Go語言網站訪問速度慢的問題。本文將介紹7種有效方法來解決這個問題,並提供對應的程式碼範例。使用快取快取是最常見且最有效的提升網站存取速度的方法之一

php的網站:1、Facebook,世界上最大的社交媒體平台之一;2、WordPress,開源的內容管理系統,用於快速創建和管理各種類型的網站;3、Magento,功能強大的電子商務平台,用於創建和管理線上商店;4、Joomla,流行的開源內容管理系統,用於建立各種類型的網站;5、Wikipedia,免費的線上百科全書,提供各種主題的知識和資訊;6、 Digg,社群新聞網站等等。
