计算机内存分配
现代的计算机内存配置一般至少8G起步。 操作系统开机即占用512MB、chrome打开即占用1G内存、Chrome各每个网页分配一定数量的内存,这些内存要分配给页面渲染器、网络模块、浏览器外壳和JS引擎(V8引擎)、JS引擎将内存分为代码区和数据区。下面只讲解,JS内存。
JS内存图:
JS内存分为代码区和数据区,代码区是存放代码的,数据区是存放数据的。我们只研究数据区,数据区分为Stack(栈内存)和Heap(堆内存),简单类型的数据直接存放在Stack里,复杂类型的数据是把Heap地址存放在Stack里。
JS内存听起来就觉得比较抽象,下面根据几个示例和JS内存图来理解会比较好些:
例1:
var a = 1
var b = 2
var o = {
name: 'frank',
age: 18
}
var c = true
o.gender = 'male'
var o2 = {name: 'Jack'}
o2 = o
它的内存图为:
例2:
var a = 1
var b = a
b = 2
a = ?
JS内存图为:
例3:
var a = {name: 'a'}
b = a
b = {'name': 'b'}
a.name = ?
JS内存图为:
例4:
var a = {name: 'a'}
var b = a
b = null
a = ?
JS内存图为:
典型的面试题内存图解析: