1、GC定义与作用
(1)GC就是垃圾回收机制的简写
(2)GC可以找到内存中的垃圾、并释放和回收空间
(3)GC中的垃圾是什么
程序中不再需要使用对象
a.
function func() { name = 'ls'; return `${name} id a coder` } const a = func(); console.log(name);
b.
View Code
function func() { const name = 'za'; return `${name} is a teacher` } const a = func(); console.log(a);
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()
5、引用计数算法优点
(1)发现垃圾时立即回收
(2)最大限度减少程序暂停
6、引用计数算法缺点
(1)无法回收循环引用的对象
function fn(){ const obj1 = {}; const obj2 = {}; obj1.name = obj2; obj2.name = obj1; } fn();
(2)时间开销大,资源消耗大
7、标记清除算法的实现原理
核心思想:分标记和清除二个阶段完成
(1)遍历所有对象找标记活动对象
(2)遍历所有对象清除没有标记对象
(3)回收相应的空间
优点:可以回收循环引用的对象
缺点:容易产生碎片化空间,浪费空间;不会立即回收垃圾对象
8、标记整理算法实现原理
(1)标记整理可以看做是标记清除的增强
(2)标记阶段的操作和标记清除一致
(3)清除阶段会先执行整理,移动对象位置
优点:减少碎片化空间
缺点:不会立即回收垃圾对象

浙公网安备 33010602011771号