垃圾回收器能回收一群相互引用的对象

    今天做了个垃圾回收小测试,发现垃圾回收居然这么强大。

    以前以为垃圾回收器不能回收相互引用着的两个对象,但事实上,它不仅能够回收两个相互引用着的对象,就连一群两两相互引用着的对象,它也能搞定,下面是我的测试代码。

 

 

Node类

其中,others、next和prev成员是用来存放其他Node对象的引用的,

环形引用的一群对象用next和prev存放引用,两两相互引用的一群对象用others存放引用。

Node类有一个析构函数,当Node的对象被“处理”的时候,会向Console输出一条消息。

 

 

下面的代码建立了4种对象群:自引用的对象、环状单向引用着的一群对象、环状双向引用着的一群对象、两两相互引用着的一群对象,并测试当所有显式的引用都消失后强制进行垃圾回收,回收器对它们的反应。

 

 

 

 程序的输出结果显示,以上4种类型的对象群,垃圾回收器都能搞定。

我猜测,只要没有变量直接或者间接地引用到某个对象,那么在垃圾回收器工作时都会把这个对象给回收掉。

不知道这个猜测对不对。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值