美文网首页
javascript内存管理

javascript内存管理

作者: 言叶丶 | 来源:发表于2017-02-22 14:32 被阅读0次

内存声明周期

  1. 分配你所需要的内存
  2. 使用分配的内存(读写)
  3. 不再需要时释放内存

内存分配

javascript在声明变量的时候就完成了内存分配

垃圾回收

引用计数垃圾回收

此算法把对象不再需要简化定义为对象是否有其他对象在引用它

当内存不再需要时就会被释放, 垃圾回收算法主要依赖于引用的概念。引用即一个对象拥有访问另一个对象的权限,如果没有引用指向该对象,该对象就会被垃圾回收机制回收
这种方式无法处理循环引用

function test () {
    var a = {},
          b = {};
    a.c = b;
    b.c = a;
    reutrn 'asas';
}
test(); // a 和b都不会被释放。引用计数算法考虑到它们互相都有至少一次引用,所以它们不会被回收
标记-清除算法

此算法将对象不再需要简化为对象是否能够获得
这个算法设定一个根对象(js中即是window对象), 定期的javascript将从根对象开始, 找所有引用的对象,然后在查找这些对象的引用,垃圾回收器将找到所有可以获得的对象和不能获得的对象,
这个算法可以避免循环引用的问题。test执行之后返回字符串,从全局对象出发, 无法获取a、b两个对象,所以ab会被释放

从2012年起,所有现代浏览器都使用了标记-清除垃圾回收算法。

相关文章

  • 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/jfqmwttx.html