ホームページ  >  記事  >  ウェブフロントエンド  >  jsのメモリリークとはどういう意味ですか? jsメモリリークの概要

jsのメモリリークとはどういう意味ですか? jsメモリリークの概要

不言
不言オリジナル
2018-08-15 17:22:263805ブラウズ

この記事では、js のメモリ リークとは何を意味するのかを説明します。 js のメモリ リークの概要は、参考になると思います。

メモリ リーク は、ブラウザのプロセスが終了するまで、割り当てられたメモリの一部を使用またはリサイクルできないことを意味します。

ガベージ コレクターはオブジェクトを定期的にスキャンし、各オブジェクトへの参照を持つ他のオブジェクトの数をカウントします。オブジェクトの参照が 0 である (他のオブジェクトがそれを参照していない) 場合、またはオブジェクトへの参照が循環のみである場合、オブジェクトのメモリを再利用できます。

setTimeout の最初のパラメータで関数の代わりに文字列を使用すると、メモリ リークが発生します。

クロージャ、コンソールログ、ループ(2つのオブジェクトが相互に参照し、保持する場合、ループが生成されます)

メモリを解放する方法: "null"に値を代入する

メモリリークを引き起こす状況:

1 , 予期しないグローバル変数によって引き起こされるメモリ リーク

原因: グローバル変数はリサイクルされません

解決策: 厳密モードを使用して回避します

2. クロージャによって引き起こされるメモリ リーク

原因: クロージャは関数内の局所性を維持できます。解放できません。

解決策: イベント ハンドラーを外部で定義するか、クロージャに問い合わせるか、イベント ハンドラーを定義する外部関数内の DOM への参照を削除します。

原因。 : 他の場所で削除されていますが、オブジェクト内に DOM 参照がまだ存在します。

解決策: タイマーまたはコールバックを忘れました

原因: DOM が存在する場合でも、DOM 参照が存在します。が削除されても、タイマーはまだ存在するため、DOM はまだメモリ内にあります。

解決策: タイマーと DOM を手動で削除します

原因: p.1 の ul li はこの p を取得すると、取得した特定の li を間接的に参照することになります。すると、p は li を間接的に参照するため、li がクリアされてもメモリ内に残り、li が削除されない限り、その親要素は残りません。

解決策: Qing Kong を手動で削除します

関連する推奨事項:

メモリ リークを回避するための JavaScript とメモリ管理テクニック_JavaScript テクニック

JS のメモリ リークのいくつかの状況の詳細な説明_JavaScript テクニック

以上がjsのメモリリークとはどういう意味ですか? jsメモリリークの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。