亲宝软件园·资讯

展开

js内存管理与闭包

用户9553267381418 人气:0

1. 内存管理的理解

1.1 认识内存管理

不管什么样的编程语言,在代码的执行过程中都是需要给它分配内存的,不同的是某些编程语言需要我们自己手动的管理内存,某些编程语言会可以自动帮助我们管理内存.

1.2 JavaScript的内存管理

2. 垃圾回收(GC)

2.1 认识垃圾回收

2.2 GC算法 – 引用计数

2.3 GC算法 – 标记清除

2.4 其他算法优化补充

3. 闭包的概念理解

3.1 JavaScript的函数式编程

3.2 定义

4. 闭包的内存流程

function createAdder(count) {
  function adder(num) {
    return count + num
  }
  return adder
}

var adder5 = createAdder(5)
adder5(100)
adder5(55)
adder5(12)

var adder8 = createAdder(8)
adder8(22)
adder8(35)
adder8(7)

5. 闭包的内存泄漏

5.1 认识内存泄露

5.2 内存泄露的测试

<button class="create">创建一系列的数组对象</button>
<button class="destroy">销毁一系列的数组对象</button>
<script>

function createArray() {
  // 4 1024 -> 4kb * 1024 -> 4M
  var arr = new Array(1024*1024).fill(1)
  function test() {
    console.log(arr)
  }
  return test
}

// 点击按钮
var totalArr = []

var createBtnEl = document.querySelector(".create")
var destroyBtnEl = document.querySelector(".destroy")
createBtnEl.onclick = function() {
  for (var i = 0; i < 100; i++) {
    totalArr.push(createArray())
  }
  console.log(totalArr.length)
}
destroyBtnEl.onclick = function() {
  // 释放
  totalArr = []
}
</script>

5.3 浏览器的优化

function foo() {
  var name = "foo"
  var age = 18
  var height = 1.88

  function bar() {
    debugger
    console.log(name)
  }

  return bar
}

var fn = foo()
fn()

总结

加载全部内容

相关教程
猜你喜欢
用户评论