ホームページ > 記事 > ウェブフロントエンド > jsのガベージコレクションの仕組みを数秒で理解する
はじめに
js には自動ガベージ コレクション機構があり、コード実行時に使用されるメモリは実行環境によって管理されます。
js ガベージ コレクションの原理
実行環境は、使用されなくなった変数を見つけて、それらが占有しているメモリを解放します。
js ガベージ コレクション戦略
クリアをマークする
変数が環境に入ると、この変数は「環境に入る」としてマークされ、変数が環境から出ると、「環境から出る」としてマークされます。
変数をマークする方法は、特定の実装によって異なります。たとえば、「環境に入る」変数リストと「環境から出る」変数リストを使用して、どの変数が変更されたかを追跡できます。
タグの削除を使用したブラウザには、IE、Firefox、Chrome などがあります。
参照カウント
これは、あまり一般的ではないガベージ コレクション戦略であり、各値が参照された回数を追跡します。
変数 a が宣言され、その変数に参照型の値 ({name:'cc'}) が割り当てられている場合、この値への参照の数は 1 です。 '}) が別の変数 b に代入されると、この値への参照の数が 1 ずつ増加します。逆に、a に値 {name:'xx'} が割り当てられている場合、値 {name:'cc'} への参照の数は 1 減ります。値 {name:'cc'} への参照の数が 0 になると、値 {name:'cc'} にアクセスする方法がなくなったことを意味するため、値 {name:'cc'} が占有しているメモリ領域をリサイクルできます。このようにして、ガベージ コレクターが動作すると、値 {name:'cc'} が占有するメモリ領域がリサイクルされます。
この方法は Netscape Navigator 3.0 で使用されていますが、循環参照という重大な問題があります。
function circleReferenceProbem(){ let objectA = new Object() let objectB = new Object() objectA.someOtherObject = objectB objectB.anotherObject = objectA }
この関数の実行後、これら 2 つの参照値の参照数が 0 になることはないため、ガベージ コレクターはそれらが占有しているメモリ領域を再利用することはありません。
js ガベージ コレクターのパフォーマンス
js ガベージ コレクターは 1 サイクルおきにガベージ コレクションを実行するためです。
変数に割り当てられたメモリの量が大きくない場合、ガベージ コレクターのリサイクル作業負荷は大きくなりません。ただし、ガベージ コレクターの負荷が大きすぎると、遅延が発生する可能性があります。
#js でメモリを管理するための提案
JS チュートリアル 」
以上がjsのガベージコレクションの仕組みを数秒で理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。