美文网首页程序员
JavaScript内存管理

JavaScript内存管理

作者: 翔子丶 | 来源:发表于2021-01-13 09:27 被阅读0次
内存为什么需要管理

程序运行需要内存,如果不再使用的内存,没有及时释放,就会导致内存泄漏。

function fn() {
    let arrList = []
    arrList[100000] = 'wang is a coder'
}
fn()
image-20210113081823714.png
内存管理介绍

内存生命周期:分配内存——>使用内存——>释放内存

  • 内存:由可读写单元组成,表示一片可操作空间
  • 管理:人为操作一片空间的申请、使用和释放
  • 内存管理:开发者主动申请空间、使用空间、释放空间
  • 管理流程:申请——使用——释放
JavaScript内存管理

内存管理流程

// 内存分配:声明变量、函数时自动分配
let obj = {}
// 内存使用
obj.name = 'wang'
// 内存释放:使用完毕,由垃圾回收机制自动回收
obj = null

JavaScript不像C这样的底层语言,有分配和释放内存的API,存在自动垃圾回收机制,由此大多数开发者不关心内存管理,在一定情况下会导致内存泄漏

  • JavaScript中的内存管理是自动的
  • 对象不再被引用时是垃圾
  • 对象不能从根上访问到时是垃圾
可达对象
  • 可以访问到的对象就是可达对象(通过引用、作用域链)

  • 可达的标准就是从根上出发能否被找到

  • JavaScript中的根就是全局变量对象Window

    function objGroup(obj1, obj2) {
      obj1.next = obj2
      obj2.prev = obj1
    
      return {
        o1: obj1,
        o2: obj2,
      }
    }
    
    let obj = objGroup({ name: 'obj1' }, { name: 'obj2' })
    console.log(obj)
    

    图示:


    image-20210113083127333.png

如果此时删掉o2对o1的引用obj2.prev = obj1,并且删除obj对象对o1的引用后,此时o1就是不可达对象,会被作为垃圾回收


image-20210113083352935.png

相关文章

  • JavaScript —— 内存管理及垃圾回收

    目录 JavaScript内存管理内存为什么需要管理?内存管理概念JavaScript中的内存管理JavaScri...

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

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

  • 理解 JavaScript 中的内存管理(Memory Mana

    理解 JavaScript 中的内存管理(Memory Management) 平时写 JavaScript 代码...

  • JavaScript 内存管理

    内存管理 参考 MDN内存管理 生命周期 内存分配 使用内存 不需要时垃圾回收,释放内存 引用计数方式 判断对象有...

  • JavaScript内存管理

    摘抄一篇文章,写得非常好,出处在此作为一门高级语言,JS并不像低级语言C/C++那样拥有对内存的完全掌控。JS中内...

  • JavaScript内存管理

    内存生命周期 不管什么程序语言,内存生命周期基本是一致的:1.分配你所需要的内存2.使用分配到的内存(读、写)3....

  • JavaScript内存管理

    作为一门高级语言,JS并不像低级语言C/C++那样拥有对内存的完全掌控。JS中内存的分配和回收都是自动完成的,内存...

  • javascript内存管理

    内存声明周期 分配你所需要的内存 使用分配的内存(读写) 不再需要时释放内存 内存分配 javascript在声明...

  • JavaScript 内存管理

    简介 像 C 家族语言这样的高级语言一般都有底层的内存管理接口,比如 malloc()和free()。另一方面,J...

  • JavaScript 内存管理

    作为一个 JavaScript 的开发者,大多数情况下你可能不会担心内存管理问题,因为 JavaScript 引擎...

网友评论

    本文标题:JavaScript内存管理

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