ホームページ >ウェブフロントエンド >jsチュートリアル >JS ガベージ コレクション メカニズムとメモリ管理の簡単な分析
この記事は主に JS のガベージ コレクションのメカニズムとメモリ管理の簡単な分析を紹介しています。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして一緒に見てみましょう
ガベージ コレクション
JavaScript のガベージ コレクション メカニズムは非常にシンプルです。使用されなくなった変数を見つけて解放します。
ローカル変数は実行中にのみ存在します。関数の実行後は、ローカル変数が存在する必要はありません。ただし、すべての変数を判断するのはそれほど簡単ではないため、これらの変数をリサイクルするにはいくつかのメソッドを使用する必要があります
1 マークのクリア:
JavaScript で最もよく使用されるガベージ コレクションの方法は、変数が環境に入ると、その変数は「環境に入る」としてマークされ、その変数はその環境から出ると「出る」としてマークされます。一般的に、変数にアクセスする方法がないため、変数をクリアするのは環境によってマークされた変数を残すだけです。その後、ガベージ コレクターがメモリ クリーンアップ作業を完了します。
2 参照カウント:
この方法はあまり一般的ではありません。参照カウントの意味は、参照された値を記録することです。参照された回数が 0 になると、その値にアクセスする方法がなくなったことを意味します。
しかし、参照カウントには問題があります。例: この例では、Objecta と ObjectB が相互に引用されています。独自の属性、つまり、これら 2 つのオブジェクトの参照は 2 です。マークアンドスイープ戦略を使用する実装では、関数の実行後に両方のオブジェクトがスコープ外になるため、この相互参照は問題になりません。ただし、参照カウント戦略を使用する実装では、参照の数が 0 になることはないため、objectA と objectB は関数の実行後も存在し続けます。この関数が複数回呼び出される場合、大量のメモリがリサイクルされません
Web ブラウザに割り当てられる利用可能なメモリの量は、通常、デスクトップ アプリケーションに割り当てられるメモリの量よりも少ないことは誰もが知っています。この目的は主にセキュリティ上の理由で、JavaScript を実行している Web ページがシステム メモリをすべて使い切ってシステムがクラッシュするのを防ぐことです。メモリ制限の問題は、変数へのメモリの割り当てだけでなく、コール スタックやスレッド内で同時に実行できるステートメントの数にも影響します。
function problem(){ var objectA = new Object(); var objectB = new Object(); objectA.someOtherObject = objectB; objectB.anotherObject = objectA; }値の逆参照は、その値が占有しているメモリを自動的にリサイクルすることを意味するわけではありません。逆参照が実際に行うことは、次回実行時にガベージ コレクターによって再利用できるように、実行環境から値を取り出すことです。
関連する推奨事項:
Javaのガベージコレクションメカニズム、メモリ管理
JSのガベージコレクションメカニズムとメモリ割り当てJavaScriptのガベージコレクションメカニズムとメモリリークの問題
以上がJS ガベージ コレクション メカニズムとメモリ管理の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。