JavaScriptでのメモリ管理

ガベージコレクション:

JavaScriptには自動ガベージコレクションメカニズムがあり、実行環境はコード実行中に使用されるメモリを管理し、必要なメモリは自動的に管理されます。原則:使用されなくなったメモリの変数を見つけて、そのメモリを解放します。このため、ガベージコレクタは定期的にこの操作を定期的に実行します。
ローカル変数の通常のライフサイクル:ローカル変数は、関数の実行中にのみ存在します。ローカル変数が配置されているスタック(またはヒープ)メモリに対応するスペースを割り当てて値を格納し、関数が終了するまで関数内でこれらの値を使用します。関数が終了すると、それらは存在する必要がなくなり、メモリリリースすることができます。

クリアマーク:

JavaScriptで最も一般的に使用されるガベージコレクションは「マークの削除」です(たとえば、関数で変数を宣言し、この変数を実行環境に入るとマークします)。変数が実行環境に入ると、それが占有しているメモリを解放することはできず、実行環境を離れるときに解放することができます。

メモリの管理:

ガベージコレクションメカニズムを備えた言語を使用してプログラムを作成する場合、開発者は通常、メモリ管理の問題について心配する必要はありませんが、JavaScriptのメモリ管理で直面する問題は、Webブラウザに割り当てられる使用可能なメモリの量が通常に割り当てられる量よりも少ないことです。デスクトップアプリケーション、これの目的は主に安全上の考慮事項であり、JavaScript Webページがメモリ不足になり、システムクラッシュが発生するのを防ぎます。メモリ制限の問題は、可変割り当てメモリに影響するだけでなく、コールスタックとでの同時実行にも影響します。スレッド文の数。
したがって、使用するメモリを最小限に抑えることでページのパフォーマンスを向上させることができます。メモリ使用量を最適化する最善の方法は、必要なデータのみを実行ステートメントに保存することです。データが使用されなくなったら、次のことを行うのが最善です。メモリを解放するには、その値をnullに設定します。このメソッドは、ほとんどのグローバル変数とグローバルオブジェクトに適しています。ローカル変数は、スコープを離れると自動的に逆参照されます。
例:

function createA(num){
   var B = new object();
B.num = num;
       return B;
}
// 局部变量离开后已自动解除
// 赋值给全局变量C
var C  =  createA(“66”);
// 手动解除对C的引用
C = null;

ただし、値を逆参照しても、その値が占有していたメモリが再利用されるわけではありません。逆参照の実際の効果は、実行環境から値を取得して、ガベージコレクターが次に実行するときに値を再利用できるようにすることです。

おすすめ

転載: blog.csdn.net/Jonn1124/article/details/108808464