zoukankan      html  css  js  c++  java
  • JavaScript 变量类型 保存内存中的位置 和 引用

    1. JavaScript变量

      基本类型值在内存中占据固定大小的空间 因此被保存在栈内存中。

      从一个变量向另一个变量复制基本来下的值 会创建这个值得一个副本。

      引用类型的值是对象 保存在堆内存中。

      包含引用类型值得变量实际上包含的并不是对象本身 而是一个指向该对象的指针。

      从一个变量向另一个变量复制引用类型的值 复制的其实是指针 因此两个变量最终都指向同一个对象

    2. 堆和栈

      堆栈在数据结构里面的含义就是一组数据的存放方式 后进先出 

      push: 在最顶层加入数据

      pop: 返回并移除最顶层的数据

      top:  返回最顶层数据的值 但不移除

      isempty: 返回一个布尔值 表示当前stack是否为空栈

      Stack 是一种存放数据的内存区域。系统会划分出两张不同的内存空间 stack(栈) 和堆(heap)

      stack (栈)是有结构的(就像后进先出 从下到上) 每一个区域都按照一定次序存放,可以明确知道每个区块的大小。 heap是没有结构 数据可以任意存放。因此stack的寻址速度要快于heap。

      一般来说 每个线程分配一个stack(栈) 每个进程分配一个heap。就是说 stack独占线程,heap是共享线程。

      所以 数据存放的规则是 只要是局部的 占用空间确定的数据 一般都存放在stack里面。否则就放在heap里面局部变量一旦运行结束 就会GC回收 而heap的那个对象实例直到系统的GC将这里的内存回收。因此一般内存泄漏都方生在heap

      使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,这些洗碗 后续工作好像就是垃圾回收 不用我们自己动手。他的好处是快捷,但是自由度小。

    使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,但是要我们自己动手去收拾这些 东西 洗碗等等 而且自由度大

  • 相关阅读:
    每日一小练——数值自乘递归解
    linux的webserver配置与管理——创建用户个人主页
    微价值:专訪《甜心爱消除》个人开发人员Lee,日入千元!
    四月二十五日,bugzilla for CentOS 安装
    【剑指offer】顺时针打印矩阵
    何从之
    Java实现 蓝桥杯VIP 基础练习 时间转换
    Java实现 蓝桥杯VIP 基础练习 时间转换
    Java实现 蓝桥杯VIP 基础练习 字符串对比
    Java实现 蓝桥杯VIP 基础练习 字符串对比
  • 原文地址:https://www.cnblogs.com/syomm/p/5918251.html
Copyright © 2011-2022 走看看