美文网首页
js 内存管理机制

js 内存管理机制

作者: 前端阿良古 | 来源:发表于2020-03-17 00:31 被阅读0次

什么是内存管理

所谓内存管理,是 js 从创建变量到垃圾回收的一个过程。

它的生命周期

  1. 分配你所需要的内存(变量声明的时候)
  2. 使用分配的内存(读,写)
  3. 不需要的时候回收(或者释放)内存

js 的内存空间

分三种:

  • 栈:存放变量,包括基础数据类型的变量及对象的指针
  • 堆:存放引用数据类型的值
  • 池:一般也归类为栈,保存常量

垃圾回收的原理

找出那些不再继续使用的变量,然后释放其占用的内存。

浏览器的垃圾回收策略

  1. 标记清除:当变量进入引用坏境时标记为“进入环境”,离开引用环境时标记为“离开环境”,垃圾回收器运行时把标记为“离开环境”的变量回收掉,完成内存清除的工作。标记的方式有很多种(浏览器内部会做的),比如翻转某个特殊位,再或者使用一个“进入环境”的变量列表和“离开环境”的变量列表来记录。从2012年起,所有现代浏览器都使用了标记-清除垃圾回收算法。
  2. 引用计数算法:简单说就是,有引用时 +1,没有引用 -1,引用计数为 0 时回收。那么就有了循环引用的对象不能被回收的情况,因为它的引用计数永远不能为 0,除非手动把引用置为 null

什么是内存泄漏

不再用到的内存,没有及时释放,就叫做内存泄漏(memory leak)

js 中哪些操作会引发内存泄漏:

  • 闭包
  • 用完的定时器没有清除
  • 死循环(例如没有结束条件的递归,循环引用的对象)
  • 意外的全局变量(例如没有使用 var, let, const 定义的变量)
  • 被移除的DOM节点上的绑定事件没有清除

相关文章

  • 谈谈js中的内存机制——垃圾回收机制

    内存管理机制就是分配内存管理,每种编程语言都有它的内存管理机制,JavaScript的内存管理机制是:内存基元在变...

  • js 内存管理机制

    什么是内存管理 所谓内存管理,是 js 从创建变量到垃圾回收的一个过程。 它的生命周期 分配你所需要的内存(变量声...

  • Java内存管理机制 ————浅析原理

    java内存管理机制 内存泄漏 内存溢出 内存抖动: 话术整理 首先java的内存管理机制 gc的垃圾回收...

  • Android内存管理机制

    Android内存管理机制 [转载自大果仁Pareto的 android内存管理机制] 1、基于Linux内存管理...

  • javaScript 内存管理机制

    大家好,今天分享的主题为 JavaScript 内存管理机制,本次分享将从以下三部分进行讲述: js 内存管理与 ...

  • javaScript 内存管理机制

    大家好,今天分享的主题为 JavaScript 内存管理机制,本次分享将从以下三部分进行讲述: js 内存管理与 ...

  • Android内存管理机制

    Android内存管理机制的定义 内存的分配 内存的回收 管理机制的说明 管理的内存对象 进程 对象 变量 管理的...

  • 内存优化(app专项测试)

    1.优化内存的常见操作 (一)内存管理机制 (二)常用内存监控工具 (三)内存优化案例分析 2.内存管理机制 AR...

  • iOS的内功:内存管理机制

    1.Objective-C的内存管理机制 OC的内存管理机制有三种,分别是ARC(自动内存管理),MRC(手动内存...

  • android内存管理

    内存管理机制概述 Android 的内存管理机制可以简单概括为:系统没有为内存提供交换区,它使用 paging (...

网友评论

      本文标题:js 内存管理机制

      本文链接:https://www.haomeiwen.com/subject/kqvaehtx.html