The software makes an explicit call to the finalize() method
from outside the finalizer.
Extended Description
While the Java Language Specification allows an object's finalize() method
to be called from outside the finalizer, doing so is usually a bad idea. For
example, calling finalize() explicitly means that finalize() will be called
more than once: the first time will be the explicit call and the last time
will be the call that is made after the object is garbage collected.
Time of Introduction
Implementation
Applicable Platforms
Languages
Java
Demonstrative Examples
Example 1
The following code fragment calls finalize()
explicitly:
(Bad Code)
Java
// time to clean up
widget.finalize();
Potential Mitigations
Phase
Description
Do not make explicit calls to finalize(). Use static analysis tools to
spot such instances.