js 的垃圾回收机制

简介: js 的垃圾回收机制

内存的生命周期

JS环境中分配的内存,一般有如下生命周期:

1.   内存分配:当我们声明变量、函数、对象的时候,系统会自动为他们分配内存。

2.   内存使用:即读写内存,也就是使用变量、函数等。

3.   内存回收:使用完毕,由垃圾回收器自动回收不再使用的内存。

全局变量:全局变量一般不会回收(关闭页面回收)。

局部变量:一般情况下局部变量的值,不用了,会被自动回收掉。

内存泄漏:

程序中分配的内存由于某种原因程序未释放或无法释放叫做内存泄漏。

js常见的垃圾回收算法:

引用计数法:

IE采用的引用计数算法,定义“内存不再使用”,就是看一个对象是否有指向它的引用,没有引用了就回收对象算法:

1.跟踪记录被引用的次数。
2.如果被引用了一次,那么就记录次数1,多次引用会累加++。

3.如果减少一个引用就减1 --。
4.如果引用次数是0,则释放内存。

 

IE采用的引用计数算法,定义“内存不再使用”,就是看一个对象是否有指向它的引用,没有引用了就回收对象算法:

1.跟踪记录被引用的次数。

2.如果被引用了一次,那么就记录次数1,多次引用会累加++。

3.如果减少一个引用就减1 --。

4.如果引用次数是0,则释放内存。

相关文章
|
2月前
|
JavaScript 前端开发 算法
【JavaScript】JavaScript 垃圾回收机制深度解析:内存管理的艺术
JavaScript的内存管理和垃圾回收机制涉及栈内存与堆内存、引用计数与标记-清除算法。栈内存存储基本类型和函数调用时的局部变量,而堆内存用于复杂数据类型,如对象和数组。垃圾回收主要通过标记-清除策略,处理不再被引用的对象。现代引擎如V8使用分代收集和增量标记等优化方法,减少停顿并提升性能。开发者应注意避免内存泄漏,如及时解除引用、管理DOM引用和定时器,使用WeakMap和WeakSet等。理解这些原理和最佳实践对于编写高效代码至关重要。
61 5
|
1月前
|
存储 JavaScript 算法
你真的了解JS垃圾回收机制吗?
你真的了解JS垃圾回收机制吗?
15 0
|
1月前
|
自然语言处理 前端开发 JavaScript
前端 JS 经典:闭包与内存泄漏、垃圾回收
前端 JS 经典:闭包与内存泄漏、垃圾回收
23 0
|
2月前
|
JavaScript 前端开发 算法
JavaScript 使用自动垃圾回收机制来管理内存
JavaScript 使用自动垃圾回收机制来管理内存
18 0
|
2月前
|
JavaScript 前端开发 算法
JavaScript的垃圾回收机制
JavaScript的垃圾回收机制
17 0
|
2月前
|
JavaScript 前端开发 算法
JS垃圾回收机制
JS垃圾回收机制
|
3月前
|
JavaScript 前端开发 算法
垃圾回收:JavaScript内存管理的利器
垃圾回收:JavaScript内存管理的利器
|
3月前
|
JavaScript 前端开发 算法
JavaScript的垃圾回收机制通过标记-清除算法自动管理内存
【5月更文挑战第11天】JavaScript的垃圾回收机制通过标记-清除算法自动管理内存,免除开发者处理内存泄漏问题。它从根对象开始遍历,标记活动对象,未标记的对象被视为垃圾并释放内存。优化技术包括分代收集和增量收集,以提升性能。然而,开发者仍需谨慎处理全局变量、闭包、定时器和DOM引用,防止内存泄漏,保证程序稳定性和性能。
41 0
|
3月前
|
JavaScript 前端开发 算法
JavaScript 的垃圾回收机制有一些潜在的缺点
【5月更文挑战第11天】JavaScript 的垃圾回收机制虽自动化管理内存,降低泄漏风险,但也存在性能开销、无法精确控制内存释放、全局变量和闭包可能导致内存泄漏、弱引用及循环引用问题。开发者需注意优化代码,避免这些问题,以充分利用垃圾回收机制并提升应用性能。
30 0
|
3月前
|
JavaScript 前端开发 算法
了解JavaScript的垃圾回收机制
JavaScript的垃圾回收机制自动回收不再使用的内存,主要通过标记清除和引用计数算法。它从根对象开始遍历引用链,标记活跃对象并清理未标记的。引用计数算法在对象引用为零时回收,但循环引用会导致问题。现代垃圾回收器能处理循环引用,防止内存泄漏。示例代码展示了当大数组不再被引用时,垃圾回收机制自动清理内存。