花了一个人生命中,最宝贵的的时光来赚钱,为了在最不宝贵的时间里享受一点点容易被质疑的自由。
一、内存管理
⑴. 内存管理
- 内存: 由可读单元组成,表示一片可操作空间
- 管理: 人为地操作一片空间的申请、使用、释放
- 内存管理: 开发者主动的申请空间、使用空间、释放空间
- 流程: 申请 - 使用 - 释放
示例:
let obj = {}
obj.name = 'zoe'
obj = null
⑵. 垃圾回收
垃圾:
- JavaScript 中内存管理是自动的
- 对象不再被
引用 时是垃圾 - 对象不能从
根上访问 到是垃圾
可达对象:
- 可以访问到的对象就是可达对象(引用,作用域链)
- 可达的标准就是从根上出发是否能被找到
- JavaScript 中的根可以理解为全局变量对象
代码示例:
function objGroup(obj1, obj2) {
obj1.next = obj2
obj2.prev = obj1
return {
o1: obj1,
o2: obj2
}
}
let obj = objGroup({name: 'obj1'}, {name: 'obj2'})
console.log(obj)
对象引用关系:
二、GC 算法
1. 概述
定义与作用:
- GC 就是垃圾回收机制的简写
- GC 可以找到内存中的垃圾、并释放和回收空间
GC 中的垃圾:
GC 算法:
- GC 是一种机制,垃圾回收器完成具体的工作
- 具体工作:查找垃圾、释放空间、回收空间
- 算法就工作时查找和回收垃圾所遵循的规则
2. 引用计数
3. 标记清除
4. 标记整理
5. 分代回收
三、V8 引擎的垃圾回收
四、performance 工具
五、代码优化实例
|