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算法也是标记清除法

posted @   w灰二  阅读(148)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示