Javascript 的内存管理

Posted 格格123456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript 的内存管理相关的知识,希望对你有一定的参考价值。

js中垃圾收集机制原理:垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间), 周期性地执行这一操作:找出那些不再继续使用的变量,然后释放其占用的内存。

 

1.引用计数法

原理:当javascript代码生成一个新的内存驻留项时(比如一个对象或函数),系统就会为这个项留出一块内存空间。因为这个对象可能会被传递给很多函数,并且会被指定给很多变量,所以很多代码都会指向这个对象的内存空间。JavaScript会跟踪这些指针,当最后一个指针废弃不用时,这个对象占用的内存会被释放。

缺点:

    -内存泄漏问题(内存泄漏是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果)

    -循环引用问题

    

2.标记清除法

    //标记清除算法由以下步骤组成:

    -垃圾回收器构建"roots"列表。Roots通常是代码中保留引用的全局变量。在JavaScript中,"window"对象可以作为 root 全局变量示例。

    -所有的"roots"被检查并标记为active(即不是垃圾)。所有的children也被递归检查。从"root"能够到达的一切都不被认为是垃圾。

    -所有为不被标记为active的内存可以被认为是垃圾了。收集器限制可以释放这些内存并将其返回到操作系统。

以上是关于Javascript 的内存管理的主要内容,如果未能解决你的问题,请参考以下文章

javascript内存管理

JavaScript 之垃圾回收和内存管理

javascript内存管理(堆和栈)和javascript运行机制

javascript 变量,作用域,内存管理小结

How Javascript works (Javascript工作原理) 内存管理及如何处理 4 类常见的内存泄漏问题

JavaScript如何工作 3之 内存管理+如何处理4个常见的内存泄漏