垃圾收集的原理

#牛客AI配图神器#
JavaScript 主要采用两种技术进行垃圾收集:**标记-清除(Mark-and-Sweep)**和 引用计数(Reference Counting)。

标记-清除(Mark-and-Sweep):

标记阶段:垃圾收集器首先会遍历根对象(例如全局对象、活动函数的变量、闭包等),并标记所有可达的对象。可达对象是指从根对象能够直接或间接访问到的对象。
清除阶段:在标记阶段结束后,垃圾收集器会遍历所有对象,删除那些没有被标记的对象,回收它们所占用的内存。
引用计数(Reference Counting):

在引用计数的机制中,每个对象都有一个引用计数,表示指向它的引用的数量。当引用计数变为零时,表明该对象不再被使用,垃圾收集器会回收它。

这种方法的缺点是无法处理循环引用。例如,如果对象 A 引用对象 B,而对象 B 也引用了对象 A,则它们的引用计数都不会降到零,从而造成内存泄漏。

垃圾收集的触发

JavaScript 的垃圾收集是自动进行的,通常在以下情况下触发:https://www.nowcoder.com/issue/tutorial?zhuanlanId=j572L2&uuid=54893728e7dc47468b75c702e19b3a62

内存不足:当应用程序试图分配更多内存而系统内存不足时。
定时:引擎可能会周期性地检测和回收未使用的内存。
全部评论

相关推荐

03-28 20:13
东南大学 Java
2的三次幂:第一个项目写的太简略了,可以结合业务背景写下细节,第二个太冗余了,缺乏量化指标,一眼玩具
点赞 评论 收藏
分享
1jian10:48h没写面评会变成这样
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务