JavaScriptのゴミ収集
2023 ワード
ごみの収集
JavaScriptは自動ごみ収集機構を持っています.実行環境はコードの実行過程で使うメモリを管理します.このようなごみ収集メカニズムの原理は実はとても簡単です.もう使い続けない変数を見つけて、その占用メモリを解放します.このため、ゴミ収集器は一定の時間間隔(またはコード実行中に予測される収集時間)で周期的に実行される.局所変数の正常宣言周期を分析します.ローカル変数は関数実行中にのみ存在します.このプロセスでは、ローカル変数は、スタック(またはスタック)メモリ上にそれぞれの空間を割り当てて、それらの値を記憶する.関数が終わるまで、関数にこれらの変数を使います.この時、局所変数は存在する必要がないので、将来のためにメモリをリリースすることができます.無駄な変数を識別するためのポリシーは、通常2つの測定があります.
1.マーククリア
JavScriptの中で最もよく使われているごみ収集方法はマーククリアです.変数が環境に入ると(例えば、関数に変数を宣言する)、この変数を環境に入ると表記します.論理的には、環境に入る変数によって占有されたメモリは永遠に解放されません.これは、実行フローが環境に応じて使用されます.変数が環境から離れると、それを環境から離れるというマークが付けられます.ゴミ収集器は実行時にメモリに格納されているすべての変数にマークを付けます.そして、彼は環境内の変数と環境内の変数によって参照される変数のマークを削除します.この後、マークを付けた変数は、環境内の変数がこれらの変数にアクセスできなくなっているため、削除を準備している変数と見なされます.最後に、ごみ収集器はメモリ除去作業を完了し、マーク付きの値を廃棄し、それらが使っているメモリを回収します.
2.引用計算
もう一つのよくないゴミ収集戦略は引用計算といいます.参照計算とは、各値が参照された回数を追跡記録することを意味します.変数を宣言して参照型の値を変数に割り当てた場合、この値の参照回数は1です.同じ値が他の変数に割り当てられている場合、修正値の参照回数は1を加算します.逆に、この値を参照する変数が含まれている場合には、他の値が得られます.この値の参照回数は1を減らします.この値が参照される回数が0であると、この値にアクセスできないということで、占有されているメモリ空間を回収することができる.循環参照とは、オブジェクトAにオブジェクトBを指すポインタが含まれ、オブジェクトBにもオブジェクトAを指すポインタが含まれていることを意味する.これらの引用回数は永遠に0ではなく、
3.性能問題
ごみ収集器は周期的に運行されています.また、変数にメモリの量を割り当てるのが客観的であれば、回収作業量もかなり大きいです.ゴミ収集の時間間隔は非常に重要な問題です.
4.メモリの管理
JavaScriptはメモリ管理及びゴミ収集を行う上で最も主要な問題であり、Webブラウザに割り当てられた利用可能メモリの数は通常デスクトップアプリケーションに割り当てられたものより少ない.このようにする目的は主に安全面を考慮して、JavaScritを実行する網易がメモリを使い果たしてシステムが崩壊することを防止することです.メモリ制限問題は、変数にメモリを割り当てるだけでなく、スタックの呼び出しや、もう一つのスレッドの中で友達がプライベートで実行できるステートメントの数にも影響します.したがって、最小のメモリを占有することで、ページがより良い性能を得ることができることを保証する.メモリ占有を最適化する最適な方法は、実行中のコードが必要なデータだけを保存することです.いったんデータが役に立たなくなると、nullに設定することでその参照を解放することが望ましいです.これを解除参照といいます.この方法はほとんどのグローバル変数とグローバルオブジェクトの属性に適用されます.ローカル変数は、それらが実行環境から離れると自動的に参照が解除されます.
JavaScriptは自動ごみ収集機構を持っています.実行環境はコードの実行過程で使うメモリを管理します.このようなごみ収集メカニズムの原理は実はとても簡単です.もう使い続けない変数を見つけて、その占用メモリを解放します.このため、ゴミ収集器は一定の時間間隔(またはコード実行中に予測される収集時間)で周期的に実行される.局所変数の正常宣言周期を分析します.ローカル変数は関数実行中にのみ存在します.このプロセスでは、ローカル変数は、スタック(またはスタック)メモリ上にそれぞれの空間を割り当てて、それらの値を記憶する.関数が終わるまで、関数にこれらの変数を使います.この時、局所変数は存在する必要がないので、将来のためにメモリをリリースすることができます.無駄な変数を識別するためのポリシーは、通常2つの測定があります.
1.マーククリア
JavScriptの中で最もよく使われているごみ収集方法はマーククリアです.変数が環境に入ると(例えば、関数に変数を宣言する)、この変数を環境に入ると表記します.論理的には、環境に入る変数によって占有されたメモリは永遠に解放されません.これは、実行フローが環境に応じて使用されます.変数が環境から離れると、それを環境から離れるというマークが付けられます.ゴミ収集器は実行時にメモリに格納されているすべての変数にマークを付けます.そして、彼は環境内の変数と環境内の変数によって参照される変数のマークを削除します.この後、マークを付けた変数は、環境内の変数がこれらの変数にアクセスできなくなっているため、削除を準備している変数と見なされます.最後に、ごみ収集器はメモリ除去作業を完了し、マーク付きの値を廃棄し、それらが使っているメモリを回収します.
2.引用計算
もう一つのよくないゴミ収集戦略は引用計算といいます.参照計算とは、各値が参照された回数を追跡記録することを意味します.変数を宣言して参照型の値を変数に割り当てた場合、この値の参照回数は1です.同じ値が他の変数に割り当てられている場合、修正値の参照回数は1を加算します.逆に、この値を参照する変数が含まれている場合には、他の値が得られます.この値の参照回数は1を減らします.この値が参照される回数が0であると、この値にアクセスできないということで、占有されているメモリ空間を回収することができる.循環参照とは、オブジェクトAにオブジェクトBを指すポインタが含まれ、オブジェクトBにもオブジェクトAを指すポインタが含まれていることを意味する.これらの引用回数は永遠に0ではなく、
3.性能問題
ごみ収集器は周期的に運行されています.また、変数にメモリの量を割り当てるのが客観的であれば、回収作業量もかなり大きいです.ゴミ収集の時間間隔は非常に重要な問題です.
4.メモリの管理
JavaScriptはメモリ管理及びゴミ収集を行う上で最も主要な問題であり、Webブラウザに割り当てられた利用可能メモリの数は通常デスクトップアプリケーションに割り当てられたものより少ない.このようにする目的は主に安全面を考慮して、JavaScritを実行する網易がメモリを使い果たしてシステムが崩壊することを防止することです.メモリ制限問題は、変数にメモリを割り当てるだけでなく、スタックの呼び出しや、もう一つのスレッドの中で友達がプライベートで実行できるステートメントの数にも影響します.したがって、最小のメモリを占有することで、ページがより良い性能を得ることができることを保証する.メモリ占有を最適化する最適な方法は、実行中のコードが必要なデータだけを保存することです.いったんデータが役に立たなくなると、nullに設定することでその参照を解放することが望ましいです.これを解除参照といいます.この方法はほとんどのグローバル変数とグローバルオブジェクトの属性に適用されます.ローカル変数は、それらが実行環境から離れると自動的に参照が解除されます.
function createPerson(name) {
var localPerson = new Object();
localPerson.name = name;
return localPerson;
}
var globalPerson = createPerson("Icey");
// globalPerson
globalPerson = null;
値の参照を解除することは、メモリを自動的に回収することを意味しません.参照解除の真の役割は、値を実行環境から逸脱させ、ゴミ収集器を次の運転時に回収することです.