内存泄漏和堆栈溢出的区别
Posted rooloo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存泄漏和堆栈溢出的区别相关的知识,希望对你有一定的参考价值。
1.内存泄露
有以下代码执行:
...
<script>
for(let i = 0; i < i+1; i++){
console.log(i)
}
</script>
...
会发生什么现象呢?
1.此时打开浏览器执行此html代码,会发生浏览器卡死现象,只能强制关闭浏览器
2.打开任务管理器,发现cpu占用100%,尤其是运行此代码的浏览器,几乎占满了cpu
*** 明显看出,内存泄漏涉及到了硬件 ***
2.堆栈溢出
有以下代码执行:
...
<script>
function test(){
test()
}
test()
console.log(123)
</script>
...
会发生什么现象呢?
1.此时打开浏览器执行此html代码,会看到浏览器报错:
2.后面的代码没有继续执行
3.浏览器正常使用,没有卡顿,且打开任务管理器可看到浏览器占用cpu没有发生明显变化
*** 明显看出,堆栈溢出没有涉及到硬件,仅是浏览器执行上下文环境的一个异常 ***
以上是关于内存泄漏和堆栈溢出的区别的主要内容,如果未能解决你的问题,请参考以下文章