Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptのガベージコレクション(GC)?


ガベージコレクション(GC)は、自動メモリ管理の一種です。ガベージコレクター、または単にコレクターは、プログラムによって使用されなくなったオブジェクトによって占有されているガベージまたはメモリを再利用しようとします。一部のメモリが「もう必要ない」かどうかを自動的に検出するという一般的な問題は決定不可能です。結果として、ガベージコレクターは一般的な問題に対する解決策の制限を実装します。

ガベージコレクションアルゴリズムが依存する主な概念は、参照の概念です。メモリ管理のコンテキスト内で、前者が後者に(暗黙的または明示的に)アクセスできる場合、オブジェクトは別のオブジェクトを参照すると言われます。

let a = []
function addToA() {
   let x = {name: "John"}
   a.push(x)
}
console.log(a[0])

出力

{name: "John"}

xはスコープ内にありませんが、aを使用してアクセスできることに注意してください。これは、参照がなくなるまでメモリにとどまる必要があることを意味します。配列からポップすると、不要になり、ガベージコレクションが可能になります。

ガベージコレクターは、次のアルゴリズムを使用して動作します-

1。参照カウントのガベージコレクション −オブジェクトは「ガベージ」、またはそれを指す参照がゼロの場合は収集可能であると言われます。これは古いブラウザで使用されます。ただし、これにより、循環参照オブジェクトは収集できないため、問題が発生します(他のオブジェクトからの参照は常に存在します)。

2。マークアンドスイープアルゴリズム −このアルゴリズムは、「オブジェクトは不要になりました」の定義を「オブジェクトに到達できません」に減らします。このアルゴリズムは、ルートと呼ばれるオブジェクトのセットの知識を前提としています。 JavaScriptでは、ルートはグローバルオブジェクトです。定期的に、GCはこれらのルートから開始し、これらのルートから参照されているすべてのオブジェクトを再帰的に検索します。したがって、ルートから開始して、GCは到達可能なすべてのオブジェクトを検索し、到達不可能なすべてのオブジェクトを収集します。

GCの詳細については、https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

をご覧ください。
  1. JavaScriptのRegExpオブジェクト。

    RegExpオブジェクトは、テキストの一部を検索および抽出することにより、一部のテキストのパターンマッチングに使用されます。 RegExpオブジェクトは、regexpコンストラクターまたはリテラル構文のいずれかを使用して作成できます。 以下は、JavaScriptのRegExpオブジェクトのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport"

  2. JavaScriptのオブジェクト初期化子

    オブジェクト初期化子は、新しく作成されたオブジェクトを初期化できるようにする式です。これは、プロパティ名の0個以上のペアと、中括弧{}で囲まれたオブジェクトの関連する値のコンマ区切りのリストです。 以下は、JavaScriptのオブジェクト初期化子のコードです。 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=d