JS高级—02—内存管理


一、认识内存管理

二、js的内存管理

结合上篇文章的调用栈,应该是在代码编译阶段,就分配好了内存;

三、js的垃圾回收

(1)垃圾回收

(2)常见的gc算法

 

四、闭包

以前可能理解错了,

  • go除了var定义的变量名还有function定义的函数名,只是变量名都是undefiend在mianScript执行才会被赋值,而函数名已经执行和fo的内存地址;(这样对应了,基本数据类型的变量都是直接在栈中赋值,引用数据类型的变量在栈中赋值堆里的内存地址;)
  • ao应该是函数被压入ecs调用栈时才创建,而不是编译阶段就创建;(课三1‘10’‘)

什么是闭包? 

主要是一个子函数(即一个函数return的函数),一直引用着父函数或者父极环境的变量,这种就是闭包;由于子函数一直引用着,即使父函数已经不在调用栈中,父函数的ao对象都不能在堆中释放,会造成内存浪费内存泄漏;

老师的第三节课主要通过gofoao的原理执行方式,告诉我们闭包;

相关