美文网首页
JavaScript 内存分配

JavaScript 内存分配

作者: hertzey | 来源:发表于2017-06-05 16:21 被阅读0次

    栈和堆

    栈:由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈(后进先出,弹夹中的子弹);

    堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。(书架上取书,知道地址即可)。

    JavaScript中并没有严格意义上区分栈内存与堆内存,因此可以粗浅的认为都是存放在堆内存种,在理解执行上下文时,仍然需要基于堆栈数据结构的思路进行处理

    原始值(原始数据类型)和引用值(复合数据类型)存储在内存中的位置分别为栈和堆

    jsStack-1.png

    解释问题
    var a = 10; var b = a; b = 'a'; console.log(a);//10

    Paste_Image.png

    var o = { a:10, b:30 }; var o1 = o; o1.b = 10; console.log(o.b); //10

    Paste_Image.png

    o和o1 存储的只是对象的引用 而o1.b修改的是对象的值 所以o.b为10;

    JavaScript的内存生命周期

    1.分配所需要的内存
    2.使用所分配的内存 变量的读和写
    3.释放内存

    var a = 10; // 分配内存 a = 'use'; // 使用内存 a = null; // 释放内存

    相关文章

      网友评论

          本文标题:JavaScript 内存分配

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