Re: variable = null; Memory Cleanup
Angry Moth Town wrote:
[...]
I suspect this came about after someone discovered that connections
have to be closed to prevent memory leaks, and decided we needed to
'close' everything we can. I'm assuming that even:
ResultSet rs = ...
rs = null;
is pointless, since the collector will know to clean up rs after it is
no longer used?
As long as `rs' itself remains reachable, the object it
refers to is also reachable and cannot be collected. Setting
`rs' to null (or making it refer to a different object) may
make the original object collectible, if there are no other
living references to that object.
The technique your colleagues are so fond of seems like
a distorted recollection of a technique one used to see in
some Java texts. The outline looks like
void method() {
BigThing thing = new BigThing();
// ... use `thing' for a while
// ... memory-hungry code not using `thing'
}
The idea here is that the variable `thing' survives until
the method returns, so the BigThing it points to doesn't
become collectible until then. Its actual lifetime runs
all the way to the end of the method, but its "useful
lifetime" ends after the first comment. If a BigThing is
really really big and the second half of the method uses a
lot of memory and/or runs for a really long time, it might
be worth while to "kill" the reference early by inserting
`thing = null;' between the two comments.
The worth (if any) of this trick rests on the large
size of the BigThing and the time/space greed of the second
half of the method. If a BigThing is not huge, the trick
isn't worth while. If the method's second half is not a
big consumer of memory and/or time, the trick is not worth
while. It's only worth while if BigThing is large *and*
the second half of the method is greedy. And if that's the
case, I'd start to wonder whether the two halves of the
method might be better off if refactored into two methods
that run sequentially.
> Now I just need to get people
> to stop adding 'throws Exception' to the end of every method...
Blecch. Sounds like you'll soon be ready to write a
maintenance manual for the Augean Stables ...
--
Eric.Sosman@sun.com