前端进阶(第一期)-调用堆栈笔记

栏目: JavaScript · 发布时间: 5年前

内容简介:在JavaScript中,最常用的是通过JavaScript的内存管理机制是:内存基元在变量(对象,字符串等等)创建时分配,然后在他们不再被使用时“自动”释放。后者被称为垃圾回收。
var a = 20;
var b = 'abc';
var c = true;
var d = { m: 20 }
复制代码
前端进阶(第一期)-调用堆栈笔记

值类型数据和引用数据类型的复制

  • 值类型数据是值的复制,开辟新的存储空间来存储值,复制前后的数据之间无联系。
  • 引用类型数据仅仅是地址的复制,开辟新的存储空间来存储地址指针,复制前后的地址指针指向堆中同一个值。

内存空间管理

在JavaScript中,最常用的是通过 标记清除 的算法来找到哪些对象是不再继续使用的, a=null 是一个释放引用的操作,脱离执行环境,这个值会在下一次垃圾收集器执行操作时被找到并释放。

1-4 JavaScript深入之带你走进内存机制

原文地址

JavaScript的内存管理机制是:内存基元在变量(对象,字符串等等)创建时分配,然后在他们不再被使用时“自动”释放。后者被称为垃圾回收。

知识点有:

  1. 内存模型
  2. 内存的生命周期
  3. 内存回收算法
  4. 内存泄漏

内存模型

JS内存空间分为 栈(stack)堆(heap)池(一般也会归类为栈中) 。 其中栈存放变量,堆存放复杂对象,池存放常量。

内存的生命周期

内存分配 --- 内存使用 --- 内存回收

内存回收算法

  • 引用计数算法

存在一个致命的问题:循环引用。如果两个对象相互引用,尽管他们已不再使用,垃圾回收器不会进行回收,导致内存泄露。

  • 标记清除算法

标记清除算法将“不再使用的对象”定义为“无法达到的对象”。从根部(在JS中就是全局对象)出发定时扫描内存中的对象,凡是能从根部到达的对象,都是还需要使用的。那些无法由根部出发触及到的对象被标记为不再使用,稍后进行回收。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解LINUX网络技术内幕

深入理解LINUX网络技术内幕

Christian Benvenuti / 夏安、闫江毓、黄景昌 / 中国电力出版社 / 2009-6 / 128.00元

Linux如此的流行正是得益于它的特性丰富及有效的网络协议栈。如果你曾经惊叹于Linux能够实现如此复杂的工作,或者你只是想通过现实中的例子学习现代网络,《深入理解Linux网络内幕》将会给你指导。同其他O'Reilly的流行书籍一样,《深入理解Linux网络内幕》清楚地阐述了网络的基本概念,并指导你如何用C语言实现。虽然早先的 TCP/IP经验是有用的,但初学者通过《深入理解Linux网络内幕》......一起来看看 《深入理解LINUX网络技术内幕》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试