We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为GC)是一种自动的内存管理机制。当一个电脑上的动态内存不再需要时,就应该予以释放,以让出内存,这种内存资源管理,称为垃圾回收(garbage collection)
JavaScript 中内存管理的主要概念是可达性。 简单地说,“可达性” 指就是那些以某种方式可访问或可用的值,它们被保证存储在内存中。
内部算法 基本的垃圾回收算法称为“标记-清除”,定期执行以下“垃圾回收”步骤:
一、 标记-清除算法 Mark-Sweep GC
二、标记-压缩 Mark-Compact 和“标记-清除”相似,不过在标记阶段后它将所有活动对象紧密的排在堆的一侧(压缩),消除了内存碎片, 不过压缩是需要花费计算成本的。如下图过程,标记后需要定位各个活动对象的新内存地址,然后再移动对象,总共搜索了3次堆。
三、引用计数 Reference Counting 引用计数,就是记录每个对象被引用的次数,每次新建对象、赋值引用和删除引用的同时更新计数器,如果计数器值为0则直接回收内存。 很明显,引用计数最大的优势是暂停时间短
四、 GC 复制算法
将堆分为两个大小相同的空间 From 和 To, 利用 From 空间进行分配,当 From 空间满的时候,GC将其中的活动对象复制到 To 空间,之后将两个空间互换即完成GC。
var obj1 = {name:'bangbang',age:18}; var b = obj1; var c = obj1.age;
js解析时变量提升,obj1、b、c都会在栈内容中分配。
前端面试:谈谈 JS 垃圾回收机制
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为GC)是一种自动的内存管理机制。当一个电脑上的动态内存不再需要时,就应该予以释放,以让出内存,这种内存资源管理,称为垃圾回收(garbage collection)
JavaScript 中内存管理的主要概念是可达性。
简单地说,“可达性” 指就是那些以某种方式可访问或可用的值,它们被保证存储在内存中。
内部算法
基本的垃圾回收算法称为“标记-清除”,定期执行以下“垃圾回收”步骤:
垃圾回收算法分为以下几种
一、 标记-清除算法 Mark-Sweep GC
二、标记-压缩 Mark-Compact
和“标记-清除”相似,不过在标记阶段后它将所有活动对象紧密的排在堆的一侧(压缩),消除了内存碎片, 不过压缩是需要花费计算成本的。如下图过程,标记后需要定位各个活动对象的新内存地址,然后再移动对象,总共搜索了3次堆。
三、引用计数 Reference Counting
引用计数,就是记录每个对象被引用的次数,每次新建对象、赋值引用和删除引用的同时更新计数器,如果计数器值为0则直接回收内存。 很明显,引用计数最大的优势是暂停时间短
四、 GC 复制算法
将堆分为两个大小相同的空间 From 和 To, 利用 From 空间进行分配,当 From 空间满的时候,GC将其中的活动对象复制到 To 空间,之后将两个空间互换即完成GC。
常见的内容泄漏原因
js堆栈
js解析时变量提升,obj1、b、c都会在栈内容中分配。
参考
前端面试:谈谈 JS 垃圾回收机制
The text was updated successfully, but these errors were encountered: