垃圾回收机制
引用计数法
Object.create({name: 15})
把这个创建的对象当作一个人名字叫张三
let a = Object.create({
name: 15})
let b = a
现在这个张三的粉丝a和b 有两个人
let a = Object.create({
name: 15})
let b = a
a == null
b == null
现在这个张三的粉丝人数就是0⃣️了
引用计数法就是当这个“人”粉丝数为零的时候我们就会把他处理掉
优点:即使回收
缺点:在遇到循环引用的时候就造成内存泄露的问题
标记清除法
从全局作用域遍历开始往下寻找,把能找的变量打上标记,直到最终。
然后再遍历回来,过程中删除没有内存中没有标记的变量
复制算法
没搞明白…
MAP 和 WeakMap
Map的基本使用
size
:返回Map结构的成员总数;
set(key,value)
:设置key所对应的键值,然后返回整个Map结构;如果key已经优质,则键值会被更新,否则就新生成改键;
get(key)
:读取key所对应的键值,如果找不到key,则返回undefined;
has(key)
:返回一个布尔值,表示某个键是否在Map数据结构中;
delete(key)
:删除某个键,返回true,如果失败,则返回false;
clear()
: 清空所有成员,没有返回值;
keys()
:返回键名;
values()
:返回键值;
entries()
:返回所有成员;
forEach()
:返回Map所有成员;
WeakMap的基本使用
size
:返回WeakMap结构的成员总数;
set(key,value)
:设置key所对应的键值,然后返回整个WeakMap结构;如果key已经优质,则键值会被更新,否则就新生成改键;
get(key)
:读取key所对应的键值,如果找不到key,则返回undefined;
has(key)
:返回一个布尔值,表示某个键是否在WeakMap数据结构中;
delete(key)
:删除某个键,返回true,如果失败,则返回false;
clear()
: 清空所有成员,没有返回值;
MAP 和 WeakMap的区别
Map对对象的引用是强引用,WeakMap是弱引用
举个例子:
Map
const map = new Map