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

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

内容简介:在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中就是全局对象)出发定时扫描内存中的对象,凡是能从根部到达的对象,都是还需要使用的。那些无法由根部出发触及到的对象被标记为不再使用,稍后进行回收。


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

查看所有标签

猜你喜欢:

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

计算机算法基础

计算机算法基础

沈孝钧 / 机械工业出版社 / 2013-11 / 45.00元

计算机算法是计算机科学的一个重要分支,也是一个难点。本书作者根据自己20多年在国内、国外的教学与科研实践,系统地总结了计算机算法的设计与分析方法,覆盖了大部分最主要的算法技术,包括:分治法、贪心法、动态规划、图的遍历技术、穷举搜索等,涉及一系列重要的算法问题,包括排序问题、选择问题、最小生成树问题、最短路径问题、网络流问题、二分图的匹配问题、字符串的匹配问题和几何算法问题等,还介绍了问题本身的计算......一起来看看 《计算机算法基础》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码