JavaScript的垃圾回收与内存管理

1.垃圾回收机制

  • js具有自动的垃圾回收机制,执行环境会负责代码执行过程中使用的内存。
  • 其实现原理是找出那些不在继续使用的变量,然后释放起其占用的内存。为此,垃圾回收器会按固定的时间间隔周期性的执行这一操作。
  • 所谓的变量是指局部变量,因为全局变量的生命周期是在页面关闭才会结束。
  • 局部变量只在函数的执行过程中存在,在这个过程中内存会为这个局部变量分配相应的空间,以便于存储他们的值;然后再函数中使用。当函数执行完毕,这些局部变量就没有存在的必要了,因此可以释放他们的内存,以便于将来使用。

2.垃圾回收的方法

  • 标记清除(常用)

其原理是当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,则将其标记为“离开环境”。

  • 引用计数(不太常用)

3.垃圾回收的性能问题

垃圾收集器是周期运行的,如果为变量分配的内存很可观,那么回收的工作量也是很大;因此确定垃圾收集的时间间隔是一个很重要的问题

4.管理内存

在js中一般不需要操心内存管理的问题;但是分配给web浏览器的可用内存数量通常比桌面应用程序少。这样做主要是出于安全方面的考虑。目的是防止js的网页耗尽系统内存而导致的系统崩溃。
因此,确保占用最少的内存可以让页面获取最好的性能。
一旦数据不再有用,可以通过将其值设置为null来释放引用,这个叫解除引用

5.内存泄漏是什么

内存泄漏就是应用程序使用过且不再需要的内存,没有及时的释放到可用的内存池中。

6.内存泄漏的常见案例

  • 闭包

闭包会引用包含函数的整个活动对象导致函数内部变量得不到释放。

  • 没有清除掉的定时器
  • 意外的全局变量
  • DOM清空或删除时,绑定的事件没清除

你可能感兴趣的:(JavaScript的垃圾回收与内存管理)