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

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

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


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

查看所有标签

猜你喜欢:

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

深入解析Spring MVC与Web Flow

深入解析Spring MVC与Web Flow

Seth Ladd、Darren Davison、Steven Devijver、Colin Yates / 徐哲、沈艳 / 人民邮电出版社 / 2008-11 / 49.00元

《深入解析Spring MVCgn Web Flow》是Spring MVC 和Web Flow 两个框架的权威指南,书中包括的技巧和提示可以让你从这个灵活的框架中汲取尽可能多的信息。书中包含了一些开发良好设计和解耦的Web 应用程序的最佳实践,介绍了Spring 框架中的Spring MVC 和Spring Web Flow,以及着重介绍利用Spring 框架和Spring MVC 编写Web ......一起来看看 《深入解析Spring MVC与Web Flow》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

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

正则表达式在线测试

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具