天天看點

06JS進階-記憶體溢出與記憶體洩漏

1. 記憶體溢出

  * 一種程式運作出現的錯誤

  * 當程式運作需要的記憶體超過了剩餘的記憶體時, 就出抛出記憶體溢出的錯誤

2. 記憶體洩露

  * 占用的記憶體沒有及時釋放

  * 記憶體洩露積累多了就容易導緻記憶體溢出

  * 常見的記憶體洩露:

    * 意外的全局變量

    * 沒有及時清理的計時器或回調函數

    * 閉包

<!--
1. 記憶體溢出
  * 一種程式運作出現的錯誤
  * 當程式運作需要的記憶體超過了剩餘的記憶體時, 就出抛出記憶體溢出的錯誤
2. 記憶體洩露
  * 占用的記憶體沒有及時釋放
  * 記憶體洩露積累多了就容易導緻記憶體溢出
  * 常見的記憶體洩露:
    * 意外的全局變量
    * 沒有及時清理的計時器或回調函數
    * 閉包
-->

<script type="text/javascript">
  // 1. 記憶體溢出
  var obj = {}
  for (var i = 0; i < 10000; i++) {
    obj[i] = new Array(10000000)
    console.log('-----')
  }

  // 2. 記憶體洩露
    // 意外的全局變量
  function fn() {
    a = new Array(10000000)
    console.log(a)
  }
  fn()

   // 沒有及時清理的計時器或回調函數
  var intervalId = setInterval(function () { //啟動循環定時器後不清理
    console.log('----')
  }, 1000)

  // clearInterval(intervalId)

    // 閉包
  function fn1() {
    var a = 4
    function fn2() {
      console.log(++a)
    }
    return fn2
  }
  var f = fn1()
  f()

  // f = null
           

繼續閱讀