先端基本ステップ(一):メモリ空間詳細図解
:
:www.jianshu.com/p/996671d4dcc4
変数オブジェクトとヒープメモリ
var a
= 20;
var b
=
'abc'
;
var c
= true;
var d
= { m: 20 }
JavaScript , , , 。 , , 。
。 JS 。 JS , , 。 ? ? , 。
, JS , 。
、
: ,
C/C++ ,JavaScript 。 JavaScript 。 , , JavaScript ( )。 。 。
, 。 。
。 5, , 。 1, 4 , 1 。 , 。 。
, 。
, , , , 。 JSON , key-value
でいいです. が っていますので、 たちの に はありません. の だけに を っています.
、 オブジェクトとベースデータタイプ
JavaScriptの コンテキストが されると、 オブジェクトという なオブジェクトが されます.JavaScriptの データタイプは オブジェクトに されます.
には、 の もヒープメモリに されていますが、 の となる な のため、 たちは する にはまだヒープメモリと する があります.
データタイプは なデータセグメントです.JavaScriptには5つの データタイプがあります.それぞれUndefined、Null、Boolean、Number、String
. データの は でアクセスします. に されている の を することができます.
、 データタイプとヒープメモリ
の とは じません.JSの データの は、 Arayのように、それらの の きさは されていません. データタイプの は、ヒープメモリに されているオブジェクトです.JavaScriptは にメモリの の にアクセスすることができませんので、 のメモリ を することはできません.オブジェクトを するときは、 のオブジェクトではなくオブジェクトの を します.したがって、 の の はすべて でアクセスされます.ここでの は、メモリの の に けられた オブジェクトに されているアドレスの つとして く できます.
オブジェクトとメモリをよりよく るために、 の と み わせて を することができます.
var a1 = 0; //
var a2 = 'this is string'; //
var a3 = null; //
var b = { m: 20 }; // b ,{m: 20}
var c = [1, 2, 3]; // c ,[1, 2, 3]
の
したがって、 たちはヒープメモリの データの にアクセスしたいですが、 にはまず オブジェクトからそのオブジェクトのアドレス (またはアドレスポインタ)を してから、ヒープメモリから なデータを します.
JSのメモリ を すれば、メモリ の を して タイプのいくつかの を することができます.
の ではよくこのような があります.// demo01.js
var a = 20;
var b = a;
b = 30;
// a ?
// demo02.js
var m = { a: 10, b: 20 }
var n = m;
n.a = 15;
// m.a
オブジェクトのデータがコピーされた 、システムは に しい に しい を り てます.var b = a
、aとbは20に しい ですが、 いに して しない です. には のように.ですから、bの を したら、aの は わりません.
demo 01
demo 02では、var n = m
タイプをコピーする をします. タイプのコピーも に、 しい に に り てられます. オブジェクトには、この しい は、 タイプのアドレスポインタだけです.アドレスポインタが いに しているにもかかわらず、 オブジェクトにアクセスした のオブジェクトは に じです. に すように
ですから、nを えると、mも わります.これが タイプの です.
demo 02
メモリの から すると、 な じがしますか?これ にも、JavaScriptの 、 ドメインチェーン、クローズド、プロトタイプチェーンなどの な を ずつ することができます. の はこれからゆっくりまとめますので、 しみにしていてください.
メモリ
JavaScriptは ごみ を っているので、 にメモリの に がないようです.メモリの り てと は に を しました.しかし、 の によって、メモリの みを ることは、 が いたコードが に があったかを に し、より れた を つコードを することに ちます.だからメモリに を つことはとても なことです.
JavaScriptのメモリライフサイクル1.
2. ( 、 )
3. 、
を にするために,この を な を いて した.var a = 20; //
alert(a + 100); //
a = null; // ,
と ステップはよく かります.JavaScriptは を する にメモリ り てを しました. でメモリ を するのは、 たちが に する がある です.
JavaScriptには ごみ の みがありますが、この ごみ の みの は ですか? はとても です.もう い けないものを して、 っているメモリを します.ゴミ は まった ごとに を います.
JavaScriptでは、マーククリアのアルゴリズムによって、どのオブジェクトが されていないかを つけるのが も であるので、a = null
には1つのリリース の だけをして、a の する が を って、 から れると、この は のゴミ の に つけられ、 されます. な に を することは、ページのより い を るための な である. では、 の が すると、 が する がなくなり、ゴミ は して しやすい.しかし、 はいつメモリ を に する があるかは しにくいので、 の では、 を するために、 の をできるだけ ける があります.