Java Reference
In-Depth Information
This guideline applies specifically to local variables. For a case where explicitly eras-
ing objects is useful, see Guideline 49 , “ Remove short-lived objects from long-lived con-
tainer objects .
Noncompliant Code Example
In this noncompliant code example, buffer is a local variable that holds a reference to
a temporary array. The programmer attempts to help the garbage collector by assigning
null to the buffer array when it is no longer needed.
Click here to view code image
{ // Local scope
int[] buffer = new int[100];
doSomething(buffer);
buffer = null;
}
Compliant Solution
Program logic occasionally requires tight control over the lifetime of an object referenced
from a local variable. In the unusual cases where such control is necessary, use a lexical
blocktolimitthescopeofthevariable,becausethegarbagecollectorcancollecttheobject
immediately when it goes out of scope [Bloch 2008].
This compliant solution uses a lexical block to control the lifetime of the buffer ob-
ject:
Click here to view code image
{ // Limit the scope of buffer
int[] buffer = new int[100];
doSomething(buffer);
}
Applicability
It is unnecessary to set local reference variables to null when they are no longer needed
in a mistaken attempt to help the garbage collector reclaim the associated memory.
Search WWH ::




Custom Search