垃圾回收机制以及内存泄露

垃圾收集机制的原理:

在我们编写JS的过程中,内存的分配以及内存的回收会通过垃圾收集器按照固定的时间间隔,周期性的找出不再继续使用的变量,然后释放其占用的内存来进行自动管理。在代码执行过程中当变量被声明的时候,将这个变量标记为“进入环境”,它只在函数的执行过程中存在,当函数运行结束,这些变量没有再被引用将要离开环境的时候,这些变量就会被标记为“离开环境”被回收内存。这时垃圾收集器会执行最后一步内存清除的工作,销毁那些带“离开环境”标记的值并回收它们所占用的内存空间。

但全局变量的生命周期则会一直到浏览器卸载页面才会结束,也就是说全局变量不会被当成垃圾回收

 

内存泄漏:

由于疏忽或错误造成程序未能释放那些已经不再使用的内存,造成内存的浪费。基本类型的值存在内存中,被保存在栈内存中,引用类型的值是对象,保存在堆内存中。所以对象、数组之类的,才会发生内存泄漏

造成泄露的原因:

当不需要setInterval或者setTimeout时,定时器没有被clear,定时器的回调函数以及内部依赖的变量都不能被回收,造成内存泄漏。

解决方法:定时器完成工作的时候,手动清除定时器。

闭包可以维持函数内局部变量,使其得不到释放,造成内存泄漏。

解决方法:手动解除引用,obj = null

没有清理DOM元素引用:

解决办法:refA = null;

console保存大量数据在内存中。

解决:合理利用console,尽量少的使用console,且使用完要记得注释掉。

避免内存泄漏的建议:

  1. 尽量避免全局变量的使用
  2. dom引用要及时解除
  3. 闭包中的变量,定时器清除
  4. 避免死循环
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值