垃圾收集的原理

#牛客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

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

相关推荐

双非本科,211硕士。自学java半年,想去找一个实习,求大佬们锐评一下简历
nsjbambmbs:简历一写就是微服务,一问实际就俩服务,简历一写就是高并发一问 QPS 个位数既然写了微服务,那我出系统设计题场景题也没啥问题吧
点赞 评论 收藏
分享
2025-12-23 18:51
中南大学 Java
唉又萌混过关:是不是那种收钱盖实习章的机构?
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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