JavaScript 内存分配

栈和堆

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

堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由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; // 释放内存

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 内存管理 简述OC中内存管理机制。与retain配对使用的方法是dealloc还是release,为什么?需要与a...
    丶逐渐阅读 2,013评论 1 16
  • C语言中内存分配 在任何程序设计环境及语言中,内存管理都十分重要。在目前的计算机系统或嵌入式系统中,内存资源仍然是...
    一生信仰阅读 1,198评论 0 2
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 2,014评论 0 7
  • 在ECMAScript中,变量可以存放两种类型的值 原始值 引用类型值 原始值指的是代表原始数据类型的值,例如:u...
    liuxuan阅读 737评论 1 2
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,372评论 11 349