美文网首页
十一、闭包(堆栈内存释放问题)------ 2020-04-05

十一、闭包(堆栈内存释放问题)------ 2020-04-05

作者: 自己写了自己看 | 来源:发表于2020-04-05 17:07 被阅读0次

1、堆内存释放问题:

/**
* 1、什么时候会产生堆内存:
* 创建一个引用类型的值就会产生一个堆内存;
* 
* 2、堆内存如何释放:
* (1)如果当前创建的堆内存,不被其他东西占用;
*  浏览器会在空闲的时候,查找每一个内存的引用状
*  况;不被占用的都会被回收释放掉;
*/

let obj = {
    name: 'xxx'
}
let temp = obj;
// 这个时候形成的堆内存被obj和temp占用着,所以不会销毁;
// 如果我们想要释放这个堆内存,需要手动解除变量和值得关联;

obj = null;
temp = null;
// 这样,浏览器检测时,堆内存就不被占用,可以释放;

2、栈内存释放问题:

/**
* 1、什么时候会产生栈内存:
*   (1)打开浏览器形成的全局作用域是栈内存;
*   (2)手动执行函数形成的私有作用域是栈内存;
*   (3)基于ES6的Let/Const形成的块级作用域是栈内存;
*/

/**
* 2、全局栈内存的销毁:关闭页面的时候会销毁;
*/

/**
* 3、私有栈内存的销毁:
* (1)一般情况下,函数只要执行完成,执行时形成的
* 私有栈内存就会被销毁释放掉(排除出现无限级递归和
* 和死循环的情况);
*
* (2)但是一旦栈内存中的某个东西(一般都是堆地址)
* 被私有作用域之外的事物给占用了,则导致当前的私有
* 栈内存不能被立即释放销毁掉(特点:私有作用域中的
* 私有变量等信息也被保存下来了);
*/
(1)
function fn () {
}
fn();

(2)
function X () {
   return function () {
      // ......
   }
}

相关文章

  • 十一、闭包(堆栈内存释放问题)------ 2020-04-05

    1、堆内存释放问题: 2、栈内存释放问题:

  • 面试 | JS 闭包经典使用场景和含闭包必刷题

    思维导图 闭包 了解闭包前先来了解一下上级作用域和堆栈内存释放问题。 上级作用域的概念 函数的上级作用域在哪里创建...

  • 闭包与对象this

    闭包步骤 三根绿线引用导致不回收。所以AO不释放占用内存,以为AO释放导致内存泄漏 释放闭包:理论上三根线任意剪断...

  • 闭包的作用

    闭包:内部函数保存到外部 当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄漏(内存...

  • 前端线路图

    1 堆栈内存以及闭包作用域 1 js中的基本数据类型以及其区别 (8种) 2 js堆栈内存的运行机制 3 变量提升...

  • 闭包

    闭包就是内部的函数被保留到了外部 闭包会导致原有作用域链不释放,造成内存泄露。

  • 闭包

    闭包: 就是函数嵌套函数,内部函数就是闭包正常情况下,函数执行完成,内部函数就会销毁,释放内存空间,闭包,内部函数...

  • 闭包

    闭包作用 其外部作用域已经释放的情况下,内部方法或相应属性贮存在内存中,从而用于函数封装,或减少函数参数问题 闭包...

  • javascript中的闭包

    闭包 基本概念 当 内部函数 被保存到 外部 时,将会一定生成闭包。闭包会导致原有作用域链不释放,造成内存泄露。...

  • js闭包

    闭包 当内部函数被返回到外部并保存时,一定会形成闭包,闭包会产生原来的作用域链不释放,过度的闭包可能会导致内存...

网友评论

      本文标题:十一、闭包(堆栈内存释放问题)------ 2020-04-05

      本文链接:https://www.haomeiwen.com/subject/ylnuphtx.html