垃圾回收机制
垃圾回收
js具有自动垃圾回收机制,无需手动清除
标记清楚
原理:当js中声明一个变量的时候,将变量标为“进入环境”,则变量在内存中占有位置,当变量执行完毕,会将其标记为“离开环境”js垃圾回收机制检测到“离开环境”就会自动回收
在标准浏览器下常用这个回收方式,只是时间间隔不一样
引用计数
原理:js会跟踪每一个变量的引用次数,当变量被声明,并将一个值赋给变量,则引用计数会标注为1,如果变量执行元素或有进行了赋值,则引用计数进行加1,相反,变量赋给其他变量,或者没再进行操作,则次数减1,直到次数变为0,则回收销毁
如果出现循环引用,a调用b,b调用a,则内存会一直没有释放,容易出现内存泄漏
内存泄漏和溢出的区别
内存泄漏:动态给内存分配空间,在使用完毕之后,没有进行释放,直到程序结束
内存溢出:不顾堆栈分配的数据大小,向内存写入过多的数据,导致数据越界
栈和堆的销毁方式
栈内存
全局变量:只有浏览器关闭的时候才会回收
局部变量:只有定义在函数里的才是局部变量,函数会产生自己的作用域,当函数执行完毕时,js内存机制会自
垃圾回收机制最先出现在Python成神之路。
共有 0 条评论