1.什么是内存泄漏?
本质上讲,内存泄漏就是当变量不再被需要使用的时候,由于某种原因,它所占用的内存空间无法被释放。
2.JavaScript中存在两种变量:
(1)全局变量
(2)局部变量
全局变量的生命周期会一直存活到页面卸载,而局部变量声明在函数中,它的生命周期从执行函数开始,直到函数执行结束。在这个过程中,局部变量会在栈或栈上被分配相应的内存去存储它们的值,函数执行结束,这些局部变量也不再被使用,所以它们所占用的内存也就应该被释放。但有一种情况:局部变量所占用的内存并不会随着函数执行结束而被回收,那就是局部变量被函数外部的变量所使用,这种情况就是闭包。
3.常见的内存泄漏有哪些?
(1)闭包
(2)全局变量
(3)未销毁的定时器和回调函数
(4)未销毁的DOM引用