javascript - jsのメモリリークの問題
黄舟
黄舟 2017-05-19 10:42:35
0
4
746
リーリー

最近、面接でこのような質問に遭遇しました。この段落にメモリ リークはありますか?もしある場合、その理由とメモリ リークを解消する方法を教えていただけますか?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(4)
给我你的怀抱

メモリリーク簡単に言えば、ブラウザのプロセスが終了するまで、割り当てられたメモリを使用したりリサイクルしたりすることはできません。

循環参照問題の場合は、参照を直接削除し、test=null,因为jsガベージコレクションメカニズムを定期的に実行するように設定し、使用されなくなった変数を見つけて、それらによって占有されているメモリを解放してください。ガベージコレクション

いいねを押す +0
仅有的幸福

原理は以下の図の通りです。 テストは dom 要素を参照し、その dom 要素にイベントハンドラーを追加します。 ただし、イベント処理関数は外部スコープ内のテストを参照します。したがって、次のようになります。循環参照になります。

実際には、メモリ リークはユーザーではなくテストによって発生し、外部テストへの参照をクリアすると、この循環参照が破壊される可能性があります。

実際、マークスイープ アルゴリズムが使用されているため、これらは最新のブラウザでは問題になりません。古いブラウザでは、ガベージ コレクション アルゴリズムは参照によるメモリ リークのみを引き起こします。つまり、循環参照によってオブジェクトが作成されます。利用できず、ゴミとしてリサイクルすることはできません。

いいねを押す +0
世界只因有你

メモリリークとは何ですか?

これにより実行エラーが発生します。 。 。 。 。 。

いいねを押す +0
巴扎黑

間違いなく、CVTE の面接の質問に含まれています。 user.name への参照はクリック イベントに保持されるため、依然としてリークされます。
問題を解決する方法としては、上記のように直接参照することしか思いつきません

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート