zoukankan      html  css  js  c++  java
  • js堆和栈

    一、栈

    栈:英文为“stack”;

    定义:一种存放数据的内存区域;

    特点:

    ①LIFO,后进先出;

    可视化描述:

    ②调用栈,函数或者子例程像堆积木一样存放,以实现层层调用;

    函数调用形成一个栈帧:

        fucntion tur(b){
            var a = 4;
            return a+b;
        }
         
        function emy(y){
            var x = 3;
            return tur(x * y);
        }
         
        console.log(emy(5));
         
         
        //当调用emy时,创建了第一个栈帧,帧这包含了emy的参数和局部变量;
        //当emy调用tur时,第二个栈帧就被创建,并且压到第一个帧上,帧中包含了tur的参数和局部变量;
        //当tur返回时,最上面的帧就被弹出栈,此时剩下emy的调用帧;
        //当emy返回时,栈就空了。
         
         
         

    ③自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间。

    基本类型:String  Number  Boolean  Null  Undefined;

     

    二、堆

    堆:英文为“heap”;

    定义:一种存放复杂或者说引用类型的内存区域;

    特点:

    ①动态分配的内存,大小不定,不会自动释放,存放引用类型,包含引用类型的变量,实际上保存的不是变量本身,而是指向该对象的指针。

     

    三、栈和堆的区别

    栈:所有在方法中定义的变量都是存放在栈中的,随着方法的执行结束,这个方法的内存栈也自然销毁。存取速度比较快。

    堆:堆内存中的对象不会随方法的结束而销毁,即便方法结束了,这个对象可能被另一个引用变量所以引用,创建对象是为了反复利用,这个对象将被保存到运行时数据区域。


  • 相关阅读:
    Kafka Replication: The case for MirrorMaker 2.0
    CentOs7.3 搭建 SolrCloud 集群服务
    Redis 集群:CLUSTERDOWN The cluster is down
    Redis Cluster: (error) MOVED
    Kafka重启出错:Corrupt index found
    redis cluster slots数量 为何是16384(2的14次方)
    redis监控工具汇总
    Redis运维利器 -- RedisManager
    redis三种集群策略
    Deploy custom service on non hadoop node with Apache Ambari
  • 原文地址:https://www.cnblogs.com/jianxingjianyuan/p/10717685.html
Copyright © 2011-2022 走看看