Garbage Collection
6089 ワード
JAvascriptは見えない場所でメモリ管理を行い、コードを書く過程で役に立たないものを見つけたらどう処理しますか?
✨ Garbage Collection
不要なオブジェクトが占めるメモリを自動的に解除することを指します.
Javascriptでは、ゴミ収集は도달 가능성
というコンセプトでメモリ管理されています.
root
の値例として理解
👇 次のような対象があると言います.let seohee = {
hobby : "dance",
age : 24
};
ここでオブジェクトにnullを割り当てます.seohee = null;
console.log(seohee); // undefined
対象に到達できない状態になる.
ただし、元のオブジェクトのメモリを解放する前に参照するオブジェクトを作成し、メモリを解放すると、,!let cloneSeohee = seohee;
seohee = null;
console.log(seohee); // undefined
console.log(cloneSeohee); // {hobby: 'dance', age: 24}
元のオブジェクトとしては参照できませんが、新しく作成したオブジェクトは参照できます.
物品取引例
function transaction(seller, buyer) {
seller.receive = buyer;
buyer.giveAway = seller;
return {
구매자: buyer,
판매자: seller
}
}
let 고데기 = transaction({
name: "seohee"
}, {
name: "nayeon"
});
Transaction(トランザクション)関数は,パラメータとして受信した2つのオブジェクトを相互参照してトランザクションを行う.
ヘアアイロン商品ですべてのオブジェクトに届くようになりました.
👇 ここから2つの参照を削除します.delete 고데기.구매자;
delete 고데기.판매자.receive;
ヘア?アイロン売り手に近づくしかない.console.log(고데기.판매자); // seohee
関数全体にnullを指定すると、transaction = null;
届かない島になります.
✨ Mark and Sweep
JavaScriptエンジンでは、ゴミ収集器が実行する内部アルゴリズムをmark-and-sweepと呼ぶ.
到達可能なオブジェクト마크(mark)
その他の値제거(sweep)
の概念.
アルゴリズムの進捗
let seohee = {
hobby : "dance",
age : 24
};
seohee = null;
console.log(seohee); // undefined
let cloneSeohee = seohee;
seohee = null;
console.log(seohee); // undefined
console.log(cloneSeohee); // {hobby: 'dance', age: 24}
function transaction(seller, buyer) {
seller.receive = buyer;
buyer.giveAway = seller;
return {
구매자: buyer,
판매자: seller
}
}
let 고데기 = transaction({
name: "seohee"
}, {
name: "nayeon"
});
delete 고데기.구매자;
delete 고데기.판매자.receive;
console.log(고데기.판매자); // seohee
transaction = null;
JavaScriptエンジンでは、ゴミ収集器が実行する内部アルゴリズムをmark-and-sweepと呼ぶ.
到達可能なオブジェクト
마크(mark)
その他の値제거(sweep)
の概念.アルゴリズムの進捗
ごみ収集器はルート情報を収集しmark(記憶)とマークする
ルート参照のすべてのオブジェクトにアクセスし、
すべてのタグ付きオブジェクトと、参照されているオブジェクトにアクセスします.
一度にアクセスするオブジェクトはすべてmarkなので、同じオブジェクトには二度とアクセスしません.
ルートディレクトリからすべての到達可能なオブジェクトにアクセスするまで、上記の手順を繰り返します.
マークされていないすべてのオブジェクトをメモリから削除します.
赤枠では届かないので、ゴミ収集器でクリアされます.
🌈 n/a.結論
ごみ収集の操作方法はブラウザのJavaScriptエンジンに依存するが、2012年を基準に、すべての最新のブラウザはごみ収集にmark-and-sweepアルゴリズムを使用している.
📚 学習の参考資料📚
Reference
この問題について(Garbage Collection), 我々は、より多くの情報をここで見つけました https://velog.io/@seohee0112/Garbage-Collectionテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol