This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
The nature of automatic garbage collection has an important consequence: You can still get memory leaks. If you allow live, accessible references to unneeded objects to persist in your programs, then those objects cannot be garbage collected. Therefore, it may be a good idea to explicitly assign null into a variable when you have finished with it. This issue is particularly noticeable if you are implementing a collection of some kind.
Thanks<br />Vivek Bansal
Joined: Jun 26, 2001
Thanks for your reply. Here I am refering to the idea of islands of isolation. So if Island objects are formed, they are elibible for garbage collection.
1. I understand assigning null is a good practice. But is there a difference as to assigning null to them and not assigning null to them?
2. If asked after which line of code, i3, i4 and i2 will be eligible for garbage collection, can I say after the line "i4.i = i2;"?
The answer is that as long as the objects are accessable from your main() method using i2, i3, or i4, the objects cannot be garbage collected. If you can reach one object, you can reach them all because they form a ring of references.
So you must set i2, i3, and i4 all to null before any of the three objects can be garbage collected.
No. If you can picture it, at this point you have a ring of three joined together kites each with a string attached to your hand. As Mike explained, you must let go of all those strings for the kites to be blown away. Even though they stay connected to each other.