訪問者にとって、Web サイトにログインするとブラウザがすぐにクラッシュすることは誰にとっても耐え難いことだと思います。Web サイトがブラウザをクラッシュさせる理由の概要は次のとおりです。
1。メモリ リーク
。まずメモリ リークについて説明しましょう。メモリ リークが原因で Web サイトがクラッシュする場合は、サーバーのクラッシュとブラウザのクラッシュの 2 つの状況があります。メモリ リークによって引き起こされる問題は明白で、割り当てられたメモリへの参照が失われ、システムが動作している限りプロセスはメモリを使用し続けます。その結果、プログラムがより多くのメモリを占有すると、マシンが完全に動作を停止してメモリが完全にクリアされるまで、システムのパフォーマンスが低下します。
Apache の Web サーバーは C/C で書かれています。言うまでもなく、C/C には回復不能なメモリがあり、メモリ不足やシステムクラッシュが発生することがあります。 Java では、メモリ リークは、アクセス可能だが役に立たないオブジェクトが割り当てられていることを意味します。これらのオブジェクトは GC によってリサイクルされませんが、メモリを占有します。
クライアント側では、JavaScript によって引き起こされるメモリ リークによってブラウザがクラッシュする可能性もあります。 JavaScript のメモリ リークに関するより権威のある記事には、「JavaScript のメモリ リーク パターン」および「Internet Explorer のリーク パターンの理解と解決」などがあります。 》。
JavaScript はガベージ コレクター (GC) 言語です。つまり、メモリはオブジェクトの作成に基づいてオブジェクトに割り当てられ、オブジェクトへの参照がない場合にはブラウザによって再利用されます。記事「Fabulous Adventures Incoding」によると、「JScript は非世代のマーク アンド スイープ ガベージ コレクターを使用します。」、「非世代のマーク アンド スイープ」は使用できます。このように、ブラウザーは JavaScript を処理するために純粋なガベージ コレクションを使用しませんが、ネイティブ オブジェクト (Dom、ActiveX オブジェクトなど) のメモリを処理するために参照カウントも使用します。
参照カウント システムでは、参照される各オブジェクトは、そのオブジェクトを参照しているオブジェクトの数を知るためにカウントを保持します。カウントがゼロに達すると、オブジェクトは破棄され、オブジェクトが占有していたメモリはヒープに返されます。 オブジェクトが相互に参照する場合、循環参照が形成されます。ブラウザ (IE6、Firefox2.0) は純粋な JavaScript オブジェクト間の循環参照を正しく処理できますが、参照カウント システムにより、オブジェクトの相互参照を行うことができません。参照カウントをゼロにすることはできないため、ブラウザは JavaScript とネイティブ オブジェクト (Dom、ActiveX オブジェクトなど) 間の循環参照を処理できないため、破棄されます。したがって、Native オブジェクトと JavaScript オブジェクトの間で循環参照がある場合、メモリ リークが発生します。
簡単に言うと、ブラウザは参照カウントを使用してネイティブ オブジェクトのメモリを処理し、ネイティブ オブジェクトに関係する循環参照はメモリ リークの原因となるため、参照カウントされたオブジェクトを破棄することはできません。次の例を使用してこの文を理解すると、JavaScript によって引き起こされるメモリ リークを基本的に理解できます。
クロージャのメモリ リークなど、一部のメモリ リークは検出が難しい場合があります。メモリ リークを検出するには、「JavaScript メモリ リーク ツールの使用」を参照してください。
2。複雑な Web ページのコードとブラウザのバグ
。多数の個人 Web サイトと低品質の Web サイトコードの出現により、ブラウザーで何らかのバグが発生すると、ブラウザーのレンダリング エンジンで処理中にエラーが発生します。ループまたは直接クラッシュなどの Web ページ コード。
HTML コードにより Web サイトがクラッシュする
これは、IE6 のクラッシュを引き起こす HTML 構造エラーです。
:fixed; "> |
から参照しています。このバグは 2007 年に発見され、日本人によって発見されたと言われています:
コードをコピー
コードは次のとおりです:
IE7 をクラッシュさせる CSS コード
このバグは Stealing Rice に由来しており、省略された単語を処理するときに IE7 がクラッシュする原因と推定されています。
IE6 をクラッシュさせる JavaScript コード
Internet Explorer Sucks より、この Web サイトはコードを使用しています。IE6 を使用してアクセスすると、ブラウザーがすぐにクラッシュします。コードは次のとおりです: