Java provides the finalize method, which will first call finalize when the garbage collector releases memory, but there are some misunderstandings.
1), Object may not be garbage collected.
2) Garbage collection is not equal to "destruction", finalize is not a destructor function.
3) Garbage collection is only related to memory.
4), garbage collection and finalize are all unreliable. As long as the JVM has not exhausted its memory, it will not waste time on memory recycling.
Prerequisites for calling finalize:
1), all objects are automatically called by Garbage Collection, such as when running System.gc()
2), program Call the finalize() method for each object when exiting
3), explicitly call the finalize method
It is not recommended to use the finalize method to complete the cleanup of non-memory resources. But it is recommended to use: (1) Clean up local objects (objects created through JNI). (2) As a general format to ensure the release of
certain non-memory resources (sockets, files, ports, etc.)
finalize() method:
protected void finalize() { //finalization code here }
Simple example Code:
public class FinalizationDemo { public static void main(String[] args) { Cake c1 = new Cake(1); Cake c2 = new Cake(2); Cake c3 = new Cake(3); c2 = c3 = null; System.gc(); //Invoke the Java garbage collector } } class Cake extends Object { private int id; public Cake(int id) { this.id = id; System.out.println("Cake Object " + id + "is created"); } protected void finalize() throws java.lang.Throwable { super.finalize(); System.out.println("Cake Object " + id + "is disposed"); } }
Running result:
Cake Object 1is created Cake Object 2is created Cake Object 3is created Cake Object 3is disposed Cake Object 2is disposed
The above is the detailed content of Sample code for using the Java keyword finalize. For more information, please follow other related articles on the PHP Chinese website!