js事件循环机制:
- 事件循环机制

- 宏任务与微任务

js堆栈
- 栈:好比是定义的基本数据类型
- 堆:好比是定义的引用对象
堆栈溢出
- 产生的原因是入栈太多,出栈太慢,栈内存被占满 eg. 递归:无限的调用,每次调用都会往栈中增加变量
- 递归增加内存原理:www.cnblogs.com/pssp/p/5211…
- 解决办法:blog.csdn.net/aocucuan503…
- eg:
function isEven (num) {
if (num === 0) {
return true;
}
if (num === 1) {
return false;
}
return isEven(Math.abs(num) - 2);返回值调用isEven()导致上次的isEvent中的变量,返回值等无法释放,最后导致堆栈溢出
}
内存泄漏
- 内存泄漏是指程序被分配的栈内有一块内存既不能使用,也不能被回收 eg:定时器不清理造成内存泄漏,函数内定义变量未声明关键字,闭包
总结
其实递归造成的堆栈溢出也是内存泄漏, 使用了闭包来解决了递归造成的堆栈溢出,那么如何解决闭包造成的内存泄漏呢?可参考:www.cnblogs.com/jianxian/p/…