源代码中help GC的联想

博客探讨了Java中对象的生命周期管理和垃圾回收机制。强调了将对象置为null可以帮助提前触发垃圾回收,但并不等同于C/C++的free。同时警告避免重写finalize方法,因为这可能导致对象在应当被回收时复活。还提到了大型对象在方法内部的回收问题。

今天在看AQS的源码时看到了这段代码,有个注释,写了help GC,联想到实习的时候,组内有同学将使用完的对象也置为了null,到底这个置为null就不需要GC了吗,其实和C/C++ 的free不一样,你置为了null可以在短时间内进行gc,并不是不需要gc就释放了。
你有一个方法很长,里面定义了一个map对象,这个对象内存占用很大,如果该方法没有结束,那么这个map是无法进行回收的,此时如果想要在方法没有返回前回收这个没有用的map,就可以将map置为null来提前进行gc。
java.util.concurrent.locks.AbstractQueuedSynchronizer#acquireQueued
在这里插入图片描述

还有就是finalize方法,该方法无论在何时都不要重写!!!该方法会在jvm进行gc时调用,并且只会调用一次,因此当对象没有引用的时候可能并不会进行回收,原因就是你重写了finalize方法,在里面让该对象起死回生了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值