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算法也是标记清除法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了