2 qq 26946497 qq_26946497 于 2016.01.28 16:38 提问

两个孤立的js对象相互引用,会被回收吗

如题。
(function() {
var a = {};
var b = {};
a.b = b;
b.a = a;
})();

4个回答

caozhy
caozhy   Ds   Rxr 2016.01.28 18:54
已采纳

如果是全局变量,不会回收,但是函数内定义的局部变量,会。

danielinbiti
danielinbiti   Ds   Rxr 2016.01.28 16:55

对象相互引用,计数器无法清零,不会释放。
这就是循环引用,存在的局限性

danielinbiti
danielinbiti 回复谁用了我的英文名: 恩,是我说的不对,应该是标记清除。函数执行完是会释放的
2 年多之前 回复
qq_26946497
qq_26946497 为什么楼下观点不一样额...
2 年多之前 回复
showbo
showbo   Ds   Rxr 2016.01.28 17:16

当2个都不被使用时浏览器会自动回收

qq_26946497
qq_26946497 和楼上答案不一样啊!
2 年多之前 回复
Royal_lr
Royal_lr   Ds   Rxr 2016.01.28 16:58

会啊,,如果变量未被引用,就会被回收

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
两个互相引用对象的垃圾回收
部分转自:《深入理解java虚拟机》一书。 判断对象是否存活 1、引用计数算法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1。 当引用失效时,计数器值就减1。 任何时刻计数器为0的对象就是不可能再被使用的。 但是主流的java虚拟机没有采用引用计数算法,其中最主要的原因就是它很难解决对象之间互相循环引用的问题。 例子: 对象A和B互相引用,但除此之外,这两个对象
Python中的垃圾回收和引用环的处理
和Java语言一样,Python也有自己的垃圾回收机制。当Python中的对象越来越多的时候,会占用大量的内存空间,在某个时机,Python会自己“瘦身”,对垃圾进行回收。从基本原理来说,Python中记录了每个对象的引用次数,当引用次数为0的时候,就要被当做垃圾进行回收。在Python中通常用del语句来显示的删除对象的引用。虽然有这种机制存在,但是运行是需要耗费一些资源的,如果内存4G,数据有...
GC回收相互引用对象
java中有垃圾回收机制,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况,当对象不再被引用的时候,,对象将自动被垃圾回收器从内存中清除掉。 案例:两个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的。 public class Dd {    public static void main(String[] args){    Ddd=new D
JVM(3)对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
①首先说一下,GC里边在JVM当中是使用的ROOT算法,ROOT算法,什么称作为ROOT呢,就是说类的静态成员,静态成员就是static修饰的那种,是“根”的一个,根还包括方法中的成员变量,只有成员或对象不挂在根上,GC的时候就可能把他们搞掉,这里提到的循环引用,就看这个循环引用是否挂在根上,如果挂在根上,如果这个根还被JVM的Java代码所执行的话,就不会GC掉,如果说这个根已经被释放掉了,这个
对象A和B循环引用,最后会不会不被GC回收?-------关于Java的GC机制
①首先说一下,GC里边在JVM当中是使用的ROOT算法,ROOT算法,什么称作为ROOT呢,就是说类的静态成员,静态成员就是static修饰的那种,是“根”的一个,根还包括方法中的成员变量,只有成员或对象不挂在根上,GC的时候就可能把他们搞掉,这里提到的循环引用,就看这个循环引用是否挂在根上,如果挂在根上,如果这个根还被JVM的Java代码所执行的话,就不会GC掉,如果说这个根已经被释放掉了,这个对
垃圾回收:引用计数与分代收集机制
当引⽤计数为0时,该对象⽣命就结束了。 引⽤计数机制的优点: 1、简单 2、实时性:⼀旦没有引⽤,内存就直接释放了。不⽤像其他机制等到特定时机。实时性还带来⼀个好处:处理回收内存的时间分摊到了平时。 引⽤计数机制的缺点: 1、维护引⽤计数 2、消耗资源循环引⽤ list1    =   [] list2    =   [] list1.ap
Java对象的引用与垃圾回收
本文介绍Java中4个引用及对应的垃圾回收。
JS中的垃圾回收
根据 Wiki 的定义, 垃圾回收 是一种自动的内存管理机制。当计算机上的动态内存不再需要时,就应该予以释放,以让出内存。直白点讲,就是程序是运行在内存里的,当声明一个变量、定义一个函数时都会占用内存。内存的容量是有限的,如果变量、函数等只有产生没有消亡的过程,那迟早内存有被完全占用的时候。这个时候,不仅自己的程序无法正常运行,连其他程序也会受到影响。好比生物只有出生没有死亡,地球总有被撑爆的一天
Java内存回收机制--Java引用的种类(强引用、弱引用、软引用、虚引用)
写在前面:对Java有一定认识的人都知道,Java有垃圾回收机制,尽管如此,Java同样也会出现内存泄露,本篇系列主要介绍Java的内存回收机制,以及介绍开发过程中内存管理的小技巧。本文参考《疯狂Java-突破程序员基本功的16课》 Java内存管理包括内存分配(创建Java对象)和内存回收(回收Java对象)。这两者都是JVM(Java虚拟机)自动完成,正因如此,可能很多程序员不再
表示弱引用,即在引用对象的同时仍然允许垃圾回收来回收该对象。
表示弱引用,即在引用对象的同时仍然允许垃圾回收来回收该对象。