1. 程式人生 > >js內存空間詳細圖解-自己總結

js內存空間詳細圖解-自己總結

減少 變量 生命 收集器 find 垃圾收集器 找到 num 變量定義

原文出處http://mp.weixin.qq.com/s/NGqdjhoU3MR9LD0yH6tKIw

棧-先進後出
堆-類比成書於書架(形象),只要知道Key就可以找到value

基礎數據類型(Undefind,Null,Boolean,String,Number),按值訪問,直接操作實際值

引用數據類型,按址訪問,實際值是保存在堆內存中的對象,我們操作的是在棧中與實際值相關聯的地址。

例題解析:畫圖就好理解
var a = 20;
var b = a;// 這裏其實就是把20賦值給了b,按值傳遞
b = 30;

var m = {a:10,b:20}// m在棧中只是保存了一個地址,假設是x00001,{a:10,b:20}是保存在堆中的
var n = m;// 這裏其實把內存中一個地址賦給了n,把x00001賦給了n,
n.a = 15;// n.a操作的是堆中{a:10,b:20},所以m.a現在也被改變為了15

js內存生命周期
簡單理解
1.分配內存
2.讀寫數據
3.釋放內存

例子:
var a = 20;
alert(a+100);
a = null;// 釋放內存空間

垃圾收集器會固定時間執行一次釋放操作。
垃圾回收機制的原理,簡單理解就是找到不在使用的值,釋放內存。

a = null讓a對應的值失去引用,在垃圾收集器下次執行時釋放其占用內存空間。
減少全局變量定義,手動釋放全局變量占用空間,提高性能

js內存空間詳細圖解-自己總結