zoukankan      html  css  js  c++  java
  • js学习之堆栈内存

    **栈内存**

      >基本数据类型值是直接存放在栈内存中的

      栈内存中的变量一般都是已知大小或者有范围上限的,算作一种简单存储。而堆内存存储的对象类型数据对于大小这方面,一般都是未知的。个人认为,这也是为什么null作为一个object类型的变量却存储在栈内存中的原因。


    栈内存释放
      一般情况下,函数执行形成的栈内存,函数执行完,浏览器会把形成的栈内存自动释放。
      有时候函数执行完成,栈内存无法释放(被外部占用了)。
      全局作用域在加载页面时形成,在关闭页面时销毁(window)。

      全局作用域会在页面关闭或者刷新的时候释放。(栈内存释放后,存储在栈内存中的值也都会销毁。)
      私有作用域:一般情况下,当函数执行完成,所形成的私有作用域(栈内存)都会自动释放掉,但是也有特殊的情况。

      函数执行完成,当前形成的栈内存中,某些内容被栈内存意外的变量一直占用,此时栈内存不能释放,栈内存中存储的基本值也不会被释放,一直保存下来。最典型的就是闭包。


    **堆内存**


      > 存储引用数据类型值的


      堆内存利用空对象指针null来释放空间。
        var obj = {};此时当前对象对应的堆内存被变量obj占用,无法销毁空间。
        obj = null;由于null是空对象指针(不指向任何的堆内存),此时上一次的堆内存就没有被占用了,谷歌浏览器会在空闲时间把没有被占用的堆内存自动释放(销毁/回收)。

  • 相关阅读:
    docker(六):Dockerfile详解
    docker(五):存储卷管理
    安装VCenter 6.7
    VMware Workstation 不可恢复错误:(vmui) VERIFY bora
    HP DL360 G7安装esxi 6.0
    zabbix 4.0故障归纳
    docker(四):容器虚拟化网络概述
    安装VCenter 6.7时报错“系统未安装通用C”
    zookeeper查看日志
    zabbix(一):zabbix 4.0安装
  • 原文地址:https://www.cnblogs.com/zjz666/p/11338277.html
Copyright © 2011-2022 走看看