The following are the descriptions in the JDK:
Called by the garbage collector on a object when garbage collection determines that there is no more references to the O Bject. A Subclass overrides the finalize
method to dispose of the system resources or to perform and other cleanup.
When the garbage collector discovers that an object does not have any references, it calls the Finalize method of the object's class. Subclasses rewrite the Finalize method, typically to handle system resources or do other cleanup work.
The general contract of this is, it is invoked if and when the finalize
Java. Virtual machine had determined that there was no l Onger any means by which this object can is accessed by any of the thread that have not yet died, except as a result of a action Taken by the finalization of some and other object or class which are ready for be finalized. The method may take any finalize
action, including making this object available again to other threads; the usual purpose of< c3/>, however, is to perform cleanup actions before the object is irrevocably discarded. For example, the Finalize method for a object, represents an Input/output connection might perform explicit I/O trans Actions to break the connection before, the object is permanently discarded.
In general, the Finalze method is called when the Java Virtual Machine discovers that no active thread can refer to an object that has already been executed by the finalize. In the Finalze method, you can do anything, or even let the object be referenced by another thread, but generally the purpose of the Finalize method is to do some cleanup before the object is actually recycled. For example, an object that represents an input/output connection, its Finalize method may interrupt the corresponding I/O connection before it is recycled.
The finalize
method of class Object
performs no special action; it simply returns normally. Subclasses of May Object
override this definition.
The Finalize method of the object class does nothing but simply returns. The subclass of object can override this method.
The Java programming language does not guarantee which thread would invoke the finalize
method for any given O Bject. It's guaranteed, however, that's the thread that invokes finalize'll not being holding any user-visible synchronization lock s when the finalize is invoked. If an uncaught exception was thrown by the Finalize method, the exception was ignored and finalization of that object Termin Ates.
The Java language does not guarantee which thread will call the Finalize method. However, the thread that calls the Finalize method is guaranteed to hold any user-visible synchronization lock when finalize is called. If a failed catch exception is thrown in the Finalize method , the exception is ignored and the Finalize method aborts.
After finalize
the method have been invoked for a object, no further action is taken until the Java Vsan has again Determined that there was no longer any means by which the object can be accessed by any thread that have not yet died, Inc Luding possible actions by other objects or classes which is ready-to-be-finalized, at-which point the-object may disc Arded.
Once an object's Finalize method is called, the object cannot be referenced again by any of the active threads, and the object can no longer do anything, including those objects or classes that have executed the Finalize method until they are reclaimed by the Java virtual machine.
The finalize
method is never invoked more than once to a Java virtual machine for any given object.
A Finalize method for a particular object is never called more than once by a Java virtual machine.
Any exception thrown by the finalize
method causes the finalization of this object to being halted, but was other Wise ignored.
Any exception thrown by the Finalize method will cause the Finalize method to abort, but this will also be ignored. (It should be said that, although the exception was thrown, finalize aborted, unable to continue execution, but after this, the object will not be able to be manipulated until it is reclaimed by the Java Virtual machine.) )
"Translation" What exactly does the Finalize method do?