閉包とごみ回収メカニズムの関係について
8086 ワード
まずjsのメモリについてお話しします
jsでは,ごみ回収メカニズムはメモリ,どのようなデータが役に立たないデータ,役に立たないデータが破棄され,破棄されるのはどこのデータであるかを対象としている.
メモリはスタックとスタックに分けられ、スタックはシステム作成であり、スタックはプログラマが自分で作成し、メモリを合理的に使用できないと、メモリの漏洩を招く.
メモリの宣言サイクルについて説明します.
1.必要なメモリを割り当てる、つまりスペースを割り当てる
2.構成に必要なメモリ(読み取り、書き込み)を使用する
3.不要な場合は、それを解放する(いわゆるゴミ回収メカニズム)
メモリの割り当てについて
まずシステムの自己分配であり,jsは変数を定義すると自動的に分配を完了する.例:
そして関数呼び出し割り当て空間
上を見て、ごみの回収メカニズムを見てみましょう.
ごみ回収メカニズム
最後に、閉鎖とごみ回収メカニズム
タグクリアアルゴリズム
jsでは,ごみ回収メカニズムはメモリ,どのようなデータが役に立たないデータ,役に立たないデータが破棄され,破棄されるのはどこのデータであるかを対象としている.
メモリはスタックとスタックに分けられ、スタックはシステム作成であり、スタックはプログラマが自分で作成し、メモリを合理的に使用できないと、メモリの漏洩を招く.
メモリの宣言サイクルについて説明します.
1.必要なメモリを割り当てる、つまりスペースを割り当てる
2.構成に必要なメモリ(読み取り、書き込み)を使用する
3.不要な場合は、それを解放する(いわゆるゴミ回収メカニズム)
メモリの割り当てについて
まずシステムの自己分配であり,jsは変数を定義すると自動的に分配を完了する.例:
var n=123;// 123
var str='123';// str '123'
// o 。
//
// name ' '
var o={
name:' '
}
//
// arr ;
var arr=[1,2,3];
// ( )
// foo
// (【 】 , )
function foo(a){
return a+2
}
そして関数呼び出し割り当て空間
//
var date=new Date();//date Date() ;
var str='dafrssedeb';
var subStr=str.substr(0,4);//dafr subStr
//
// : ,
// :
上を見て、ごみの回収メカニズムを見てみましょう.
ごみ回収メカニズム
//
// :
// :
// ---->
// : ,
// :GO AO
//
// ----> , ( )
// :
var o={
a:{
b:2
}
}
// , key a key b
// , , o
// ,
var o2 = o; // o2 “ ” key a
o = 1; // ,“ ” o2 ,“ ” o
var oa = o2.a; // “ ” a key b
// ,“ ” , o2, oa
o2 = "yo"; // ,
// a oa ,
oa = null; // a
//
// : , , , ( )
最後に、閉鎖とごみ回収メカニズム
タグクリアアルゴリズム
function foo(){
var a=0;
return function(){
console.log(++a);
}
}
var res=foo();// res return ao ,
res();
//
// , , res, foo AO ,
res=null;
//
foo()();// ,