前端面试题51----JS内存泄露

JS内存空间分为栈、堆、池(一般归并到栈中)

  • 基本数据类型string、number、boolean、null、undefined保存在栈中
  • 复杂数据类型object保存在堆中
  • 常量存放在池中
  • js中分配的内存的生命周期为:内存分配->内存使用->内存回收

哪些操作会造成内存泄漏?

内存泄漏指任何对象在不再拥有或不需要它之后依然存在,即这部分内存用完之后并没有返回到内存池。

  • setTimeout第一个参数是字符串而不是函数的时候就会造成内存泄漏
  • 闭包
  • 控制台日志
  • 循环(两个对象彼此引用且彼此保留)
  • 全局变量
    如果你不断的创建全局变量,不管有没有用到他们,他们都将滞留在程序的整个执行过程中。
  • 事件监听器
    在页面中创建事件监听器,但是在页面跳转时,又忘记移除这些监听器,那么也可能导致内存泄漏。

参考自:参考

你可能感兴趣的:(前端面试题)