js css html

JS 内存管理 GC算法

2022-04-13  本文已影响0人  咸鱼不咸_123

1.内存管理

不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,不同的是某些编程语言需要我们自己手动的管理内存,某些编程语言可以自动帮我们管理内存。(因为内存资源是有限的)

不管是以什么样的方式来管理内存,内存的管理都会有如下的生命周期

不同的编程语言对于第一步和第三步会有不同的实现:

2.JS的内存管理

12.png 13.png

3.JS的垃圾回收(GC)

因为内存的大小是有限的,所以当内存不再需要的时候,我们需要对其进行释放,以便腾出更多的内存空间

3.1 常见的GC算法——引用计数

堆空间有一个属性的retain count:默认是0,多一个引用+1,少一个引用-1

如果对象开辟在堆结构开辟的空间后,在栈结构中会引用,所以堆空间的属性retain count为1

这个算法有一个很大的弊端就是会产生循环引用

14.png

3.2 标记清除

15.png

JS比较广泛的使用是标记清除,当然类似于V8引擎为了进行更好的优化,它在算法的实现细节上也会结合一些其他的算法。

4.总结

内存管理.png
上一篇 下一篇

猜你喜欢

热点阅读