lazysheep 10 X 10
Last updated: 2017-12-04
lazysheep:~ Desktop$ node Memeory Management In JS.js

> Post.tags
diving in JS

> Post.prev
理解MVC、MVP、MVVM模式

> Post.next
background对被覆盖元素视觉上的影响
Memeory Management In JS

前言

这是关于How JavaScript works第三章的总结。原文地址戳这里

概述

JS的会自动地分配和清理内存(垃圾回收机制)。但这并不意味这我们不需要关心内存的管理。

什么是内存

计算机的内存由大量的触发器组成,而每个触发器又包含了许多的晶体管,其中每个触发器可以储存1比特(bit)并被唯一的标识符所标识(address)-通过这个标识符我们可以找到这个触发器并读取或者重写其数据。
所以我们可以认为计算机的内存就是巨大的以bit为元素的数组。我们可以对它进行读(read)和写(write)操作。

内存的生命周期

  1. Allocate memory(分配内存): 通过操作系统分配内存,从而你的程序可以使用这些内存
  2. Use memory(使用内存): 对分配到的内存进行读和写操作
  3. Release memory(释放内存): 释放不再使用的内存,以便之后使用

JS中的内存管理

在JS中内存的分配、释放都是自动的。
在声明变量时分配内存,在进行读写操作时使用内存,当内存不需要再使用时释放内存。
但是难点在于如何确定何时这些内存是不在会被使用的,然后释放它,以便之后使用。

JS释放内存的机制

JS的是通过垃圾回收算法来释放内存的主要有以下两种:

  • 引用计数
  • 标记清除
    原文记录得很详细这里就不细讲了。