1、GC定义与作用

(1)GC就是垃圾回收机制的简写

(2)GC可以找到内存中的垃圾、并释放和回收空间

(3)GC中的垃圾是什么

程序中不再需要使用对象

a.

function  func() {
    name = 'ls';
    return `${name} id a coder`
}
const a = func();
console.log(name);
View Code
b.
function func() {
    const name = 'za';
    return `${name} is a teacher`
}
const a = func();
console.log(a);
View Code

2、GC算法是什么

(1)GC是一种机制,垃圾回收器完成具体的工作

(2)工作的内容就是查找垃圾释放的空间、回收空间

(3)算法就是工作时查找和回收所遵循的规则

3、常见的GC算法

(1)引用计数

(2)标记清除

(3)标记整理

(4)分代回收

4、引用计数算法实现原理

(1)引用计数算法

核心思想:设置引用数,判断当前引用数是否为0

a.引用计数器

b.引用关系改变时修改引用数字

c.引用数字为0时立即回收

const user1 = {age:11};
const user2 = {age:22};
const user3 = {age:33};
const nameList = [user1.age,user2.age,user3.age];
function fn() {
    const num1 = 1;
    const num2 = 2;
}
fn()
View Code

5、引用计数算法优点

(1)发现垃圾时立即回收
(2)最大限度减少程序暂停

6、引用计数算法缺点

(1)无法回收循环引用的对象

function fn(){
    const obj1 = {};
    const obj2 = {};
    obj1.name = obj2;
    obj2.name = obj1;
}
fn();
View Code

(2)时间开销大,资源消耗大

7、标记清除算法的实现原理

核心思想:分标记和清除二个阶段完成

(1)遍历所有对象找标记活动对象

(2)遍历所有对象清除没有标记对象

(3)回收相应的空间

优点:可以回收循环引用的对象

缺点:容易产生碎片化空间,浪费空间;不会立即回收垃圾对象

8、标记整理算法实现原理

(1)标记整理可以看做是标记清除的增强

(2)标记阶段的操作和标记清除一致

(3)清除阶段会先执行整理,移动对象位置

优点:减少碎片化空间

缺点:不会立即回收垃圾对象

 

 

posted on 2021-02-01 21:15  phantom_yy  阅读(264)  评论(0)    收藏  举报