JS中的内存管理
无论是什么编程语言,在代码执行的过程中都是需要给他们分配的内存的,不同的是某些编程语言需要自己来管理内存,某些编程语言是可以自动管理内存的。JS就是属于可以自动管理内存的编程语言。
内存管理的生命周期:
一:分配内存(申请)
二:使用内存(存放一些东西,比如对象)
三:用完后不需要用了,释放内存
JS会在定义变量的时候为我们分配内存
如果定义的变量是基本数据类型
(string,number,null,undefined,boolean,symbol)
那么会直接在栈空间进行内存的分配
如果定义的变量是复杂数据类型
(object array function)
那么会在堆内存中开辟一块空间,并且将这块空间的指针返回值变量引用
当我们需要释放内存时,JS的垃圾回收机制是GC算法
常见的GC算法:
1.引用计数:
当一个对象有一个引用指向它时,那么这个对象的引用就加一,当这个对象的引用为0时,就把他销毁。
弊端:会产生循环引用
var obj1 = {friend: obj2}
var obj2 = {friend: obj1}

这样的话内存永远不会销毁,容易引起内存泄漏
2.标记清除:
这个算法是设置一个根对象(root object),垃圾回收器会定期从这个根开始,找所有根开始有引用到的对象,如果有对象没有引用到,那么就会被认为是垃圾而清除掉。

这个算法就很好的解决了循环引用的问题
JS所采取的GC算法也是标记清除法

浙公网安备 33010602011771号