js事件循环机制、堆栈、堆栈溢出、内存泄漏

898 阅读1分钟

js事件循环机制:

  1. 事件循环机制
  2. 宏任务与微任务

参考文章:www.cnblogs.com/forcheng/p/…

js堆栈

  1. 栈:好比是定义的基本数据类型
  2. 堆:好比是定义的引用对象

堆栈溢出

  1. 产生的原因是入栈太多,出栈太慢,栈内存被占满 eg. 递归:无限的调用,每次调用都会往栈中增加变量
  2. 递归增加内存原理:www.cnblogs.com/pssp/p/5211…
  3. 解决办法:blog.csdn.net/aocucuan503…
  4. eg:
function isEven (num) {
    if (num === 0) {
        return true;
    }
 
    if (num === 1) {
        return false;
    }
 
    return isEven(Math.abs(num) - 2);返回值调用isEven()导致上次的isEvent中的变量,返回值等无法释放,最后导致堆栈溢出
}

内存泄漏

  1. 内存泄漏是指程序被分配的栈内有一块内存既不能使用,也不能被回收 eg:定时器不清理造成内存泄漏,函数内定义变量未声明关键字,闭包

总结

其实递归造成的堆栈溢出也是内存泄漏, 使用了闭包来解决了递归造成的堆栈溢出,那么如何解决闭包造成的内存泄漏呢?可参考:www.cnblogs.com/jianxian/p/…