内存泄漏和堆栈溢出的区别

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没有发生明显变化
*** 明显看出,堆栈溢出没有涉及到硬件,仅是浏览器执行上下文环境的一个异常 ***

以上是关于内存泄漏和堆栈溢出的区别的主要内容,如果未能解决你的问题,请参考以下文章

QByteArray导致的内存泄漏问题

MFC内存泄漏调试

内存泄漏与内存溢出的区别

面向开发的内存调试神器,如何使用ASAN检测内存泄漏堆栈溢出等问题

vue在比较大的项目中容易出现内存泄漏的原因是啥?

记一次服务Full GC背后的内存泄漏问题,真是匪夷所思