zoukankan      html  css  js  c++  java
  • js内存空间详细图解-笔记

    原文参考http://mp.weixin.qq.com/s/NGqdjhoU3MR9LD0yH6tKIw

    栈-先进后出
    堆-类比成书于书架(形象),只要知道Key就可以找到value

    基础数据类型(Undefind,Null,Boolean,String,Number),按值访问,直接操作实际值

    引用数据类型,按址访问,实际值是保存在堆内存中的对象,我们操作的是在栈中与实际值相关联的地址。

    例题解析:画图就好理解
    var a = 20;
    var b = a;// 这里其实就是把20赋值给了b,按值传递
    b = 30;

    var m = {a:10,b:20}// m在栈中只是保存了一个地址,假设是x00001,{a:10,b:20}是保存在堆中的
    var n = m;// 这里其实把内存中一个地址赋给了n,把x00001赋给了n,
    n.a = 15;// n.a操作的是堆中{a:10,b:20},所以m.a现在也被改变为了15

    js内存生命周期
    简单理解
    1.分配内存
    2.读写数据
    3.释放内存

    例子:
    var a = 20;
    alert(a+100);
    a = null;// 释放内存空间

    垃圾收集器会固定时间执行一次释放操作。
    垃圾回收机制的原理,简单理解就是找到不在使用的值,释放内存。

    a = null让a对应的值失去引用,在垃圾收集器下次执行时释放其占用内存空间。
    减少全局变量定义,手动释放全局变量占用空间,提高性能

  • 相关阅读:
    linux C++类中成员变量和函数的使用
    使用linux backtrace打印出错函数堆栈信息
    R String 操作
    make
    *.efasta to fasta format transformation
    python os 库
    Ch12 Resampling statistics and bootstrapping
    Updating an R installation
    10 步让你成为更优秀的程序员
    Working with large datasets
  • 原文地址:https://www.cnblogs.com/victory820/p/6871695.html
Copyright © 2011-2022 走看看