“将不再使用的临时变量立即置为null是否有助于垃圾回收”的话题好像有不少人争论过。
首先,我们要理解GC回收垃圾数据的标准是通过路径检查,看是否还有引用指向某个对象。如果不再有引用指向这个待回收的对象,那么GC会将其放入待回收队列。从这个理论上来说,适时将不再使用的变量置为null是有助于垃圾回收的。但是,进一步理解GC的工作模式,我们会发现如下几个问题。
1. GC只是将其置于待回收队列,并不一定立即回收(需要一定的条件)。
2. GC并不会在变量置为null时启动回收动作。
所以只有在某个理想状态下,这个null才有助于GC回收。因此我个人并不推荐这样的编码方式,无论从代码的优雅性还是效率上都无助于性能提升。当然对于非常消耗资源的对象,建议使用IDisposable接口和using关键字。
首先,我们要理解GC回收垃圾数据的标准是通过路径检查,看是否还有引用指向某个对象。如果不再有引用指向这个待回收的对象,那么GC会将其放入待回收队列。从这个理论上来说,适时将不再使用的变量置为null是有助于垃圾回收的。但是,进一步理解GC的工作模式,我们会发现如下几个问题。
1. GC只是将其置于待回收队列,并不一定立即回收(需要一定的条件)。
2. GC并不会在变量置为null时启动回收动作。
所以只有在某个理想状态下,这个null才有助于GC回收。因此我个人并不推荐这样的编码方式,无论从代码的优雅性还是效率上都无助于性能提升。当然对于非常消耗资源的对象,建议使用IDisposable接口和using关键字。