`

javascript垃圾收集程序

 
阅读更多

文章转自:http://www.dev26.com/blog/article/195

javascript本身是具有垃圾收集程序的,有规定的间隔时间会自动执行收集那些不在使用的变量.

原理是当变量的生命周期结束以后打上相应的标记.当垃圾程序执行时会自动回收这些带有标记

的变量所占内存.

其中局部变量的生命周期是在函数执行结束以后打上不在被引用的标记,对于如何打标记.各个浏览

器实现有所不同,大概有如两种:

1.打清除标记

  主流的一些浏览器(IE、FireFox、Opera、chrome、Safari等..)大多都是使用的这种标记的策略,大概

  意思就是垃圾收集程序一运行就给当前环境中的所有变量都打上删除标记,然后在一个个查找每个变量

  是否被引用如果有则说明这个变量还在被使用就把删除标记清掉,如果没有则保留。最后保留有删除标记

  的所占用的内存将被回收。

2.引用计数

   这种方式目前已经似乎已经没有了,在早期的一些浏览器中使用过。Netscape Navigator3.0版中有使用。

原理就是当声明了一个变量的引用。这个引用的指针就指向了这个值。从而这个值被引用的数量就+1,如果减少

一个引用就-1,当这个值被指向的数量为0的时候,下次垃圾回收程序会回收所占内存.

比如:

var a= new Object();

var b=a;

这样a 和 b都指向一个实例,这个值的计数就是2.如果把:b=null;则数量就会-1,大概就这意思.引用计数呢容易

引起一些问题其中最严重的是无法解决循环引用的问题。

例如:

function add(){

var arg1=new Object();

var arg2=new Object();

arg1.param1=arg2;

arg2.param2=arg1;


}

上面这函数呢,arg1中引用了arg2,arg2中呢也引用了arg1,两个实例的count=2.这样在函数执行结束以后呢,

它们不能够被回收内存因为它俩计数永远也不能归为,不停执行这函数就内存溢出了。

分享到:
评论

相关推荐

    javascript垃圾收集机制的原理分析

     javascript具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。在编写javascript程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的回收完全实现了自动管理。下面将详细介绍...

    Javascript 垃圾收集机制介绍理解

    经常使用 Javascript 的人会琢磨其垃圾收集机制,Javascript 并不像 C,C++ 那样需要开发者手动去清除垃圾,在编写 Javascript 程序是,开发者无需关心内存使用问题,所需内存分配以及无用内存(垃圾)的回收完全...

    javascript垃圾收集机制与内存泄漏详细解析

    JavaScript是一种动态类型的语言,它的内存管理机制主要依赖于垃圾收集(Garbage Collection, GC)。JavaScript引擎负责自动管理和释放代码执行过程中使用的内存,从而避免了像C++或C这样的语言中手动内存管理可能...

    【JavaScript源代码】一文带你了解JavaScript垃圾回收机制.docx

    ### JavaScript垃圾回收机制详解 #### 一、概述 在现代软件开发中,特别是前端领域,JavaScript 已成为不可或缺的一部分。随着应用复杂度的增加,如何有效地管理内存成为了开发者必须面对的问题之一。JavaScript ...

    论文研究-CUDA平台下LISP2算法垃圾收集并行研究.pdf

    现代语言如JAVA、C#、Ruby、JavaScript等都采用了垃圾收集技术。 综上所述,文件内容涉及了并行化垃圾收集算法的实现、CUDA平台的使用,以及LISP2算法的原理和优化。通过将LISP2算法适配到CUDA架构上并进行并行处理...

    JavaScript技巧收集.7z

    这个"JavaScript技巧收集.7z"压缩包很可能是包含了一系列关于JavaScript编程的实用技巧、代码片段或者示例项目。尽管没有具体的标签提供额外信息,我们可以从常见的JavaScript知识点出发,来探讨一些重要的概念和...

    浅谈JavaScript的自动垃圾收集机制

    JavaScript是一种动态类型的编程语言,它的执行环境为开发者...尽管现代JavaScript引擎(如V8)采用了更为复杂的垃圾收集策略,如分代收集和增量收集,但了解基础的垃圾收集机制仍然是优化JavaScript程序的重要基础。

    JavaScript内存泄漏的处理方式

    即使在高级语言如JavaScript中,这一问题亦可能出现,尽管它拥有垃圾收集机制来管理内存。在JavaScript中,开发者不直接进行内存分配与释放,而是依赖于垃圾收集器来自动处理。但某些情况下,垃圾收集器无法正确识别...

    基于微信小程序的垃圾分类信息查询设计源码

    本源码提供了一个基于微信小程序的垃圾分类信息查询设计。项目包含310个文件,其中包括115个PNG图片、...这个系统是一个垃圾分类小程序,可能包括垃圾分类信息的收集、处理、分析等功能,适合用于垃圾分类宣传和推广。

    JavaScript调试器的内存管理.pdf

    该调试器具有五个内存管理模块:Windows 内存管理、堆栈、托管堆、装箱和拆箱、GC 垃圾收集。 在 Windows 内存管理中,使用虚拟寻址系统,将程序可用的内存地址映射到硬件内存中的实际地址上。每个进程都可以使用 ...

    Chrome V8 Javascript Engine 2011-12-01: Version 3.7.12

    V8还引入了“增量垃圾收集”,在不影响主线程执行的情况下,逐步完成垃圾收集,确保应用程序的流畅性。 V8引擎支持ECMAScript标准,包括当时的最新版ECMAScript 5,以及一些ECMAScript 6的早期特性。在3.7.12版本中...

    谈谈JavaScript中的垃圾回收机制

    垃圾收集器定期运行,将所有内存中的变量标记,随后移除环境中和环境内变量无法访问的那些变量的标记,这些变量被认为是可以安全清理的,其占用的内存将被回收。 其次,另一种策略是**引用计数(Reference Counting...

    深入理解JavaScript程序中内存泄漏

    但是,垃圾收集并不神奇。了解它的工作原理,以及如何使它保留本应在很久以前释放的内存,就可以实现更快更可靠的应用程序。在本文中,学习一种定位 JavaScript 应用程序中内存泄漏的系统方法、几种常见的泄漏模式,...

    备忘录java源码-javascript-memory-leakage:检测导致垃圾收集JavaScript应用程序中的内存泄漏的源代码的简单

    备注java原始码寻找JavaScript应用程序中的内存泄漏 垃圾回收是程序通过回收未在程序中使用的对象占用的内存来执行自动内存管理的过程。 内存泄漏是指程序不需要的内存未返回操作系统或空闲内存池时的情况。 有关更...

    GarbageCollection:一种移动应用程序,可简化市政当局的门到门垃圾收集

    **垃圾收集移动应用程序** 在当前数字化时代,城市管理正逐渐向智能化转变,而“GarbageCollection”项目正是这一转变的一个体现。这个移动应用程序旨在通过技术手段优化市政当局的门到门垃圾收集服务,提高效率,...

Global site tag (gtag.js) - Google Analytics