オブジェクトを何も割り当てずに作成した場合、Javascript ガベージ コレクションはいつこのオブジェクトを収集しますか? 次に例を示します。
alert(new Date().getTime());
このようなガベージ コレクションを行わないと、メモリ リークが発生しますか?
for (var i = 0; i < 99999999; i++) {
console.info(new Date().getTime());
}
オブジェクトを何も割り当てずに作成した場合、Javascript ガベージ コレクションはいつこのオブジェクトを収集しますか? 次に例を示します。
alert(new Date().getTime());
このようなガベージ コレクションを行わないと、メモリ リークが発生しますか?
for (var i = 0; i < 99999999; i++) {
console.info(new Date().getTime());
}
スコープ内の誰も匿名オブジェクトを参照していない場合、次回 GC が実行されたときにガベージ コレクションが行われます。
したがって、Console.info の実行が終了すると、ガベージ コレクションが開始されます。それらを参照するようにスコープ内の変数を設定すると、それらは参照しません。
ガベージコレクションの利点は、メモリがいつ回収されるかわからないことです。また、気にする必要もありません(あまりにも頻繁に発生しない限り)。
この状況では、ランタイムは最終的にそれらのDate
インスタンスを再利用する必要がありますが、実際に実行する速度を変更することはありません。また、これによってメモリリークが発生することはありません。
JavaScript は GC (ガベージ コレクター) を自動的に実行して、使用されなくなった文字列、オブジェクト、配列、および関数によって占有されているメモリを再利用します。
ガベージ コレクションの重要な機能の 1 つは、メモリを再利用しても安全な時期をガベージ コレクタが判断できなければならないことです。明らかに、まだ使用されている値を再利用してはならず、到達できなくなった値のみを収集する必要があります。つまり、プログラム内の変数、オブジェクト プロパティ、または配列要素のいずれからも参照できない値です。
参考: こちら。
これは JS garbare コレクションに関する参考資料です: http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript