内存溢出与内存泄漏

  1. 内存溢出
  • 一种程序运行出现的错误
  • 当程序运行需要的内存超过了剩余的内存时, 就出抛出内存溢出的错误
  1. 内存泄露
  • 占用的内存没有及时释放
  • 内存泄露积累多了就容易导致内存溢出
  • 常见的内存泄露:
    • 意外的全局变量
    • 没有及时清理的计时器或回调函数
    • 闭包
  1. // 1. 内存溢出
  2. var obj = {}
  3. for (var i = 0; i < 10000; i++) {
  4. obj[i] = new Array(10000000)
  5. console.log('-----')
  6. }
  7. // 2. 内存泄露
  8. // 意外的全局变量
  9. function fn() {
  10. a = new Array(10000000)
  11. console.log(a)
  12. }
  13. fn()
  14. // 没有及时清理的计时器或回调函数
  15. var intervalId = setInterval(function () { //启动循环定时器后不清理
  16. console.log('----')
  17. }, 1000)
  18. // clearInterval(intervalId)
  19. // 闭包
  20. function fn1() {
  21. var a = 4
  22. function fn2() {
  23. console.log(++a)
  24. }
  25. return fn2
  26. }
  27. var f = fn1()
  28. f()
  29. // f = null