Home  >  Article  >  Java  >  Sample code for using the Java keyword finalize

Sample code for using the Java keyword finalize

黄舟
黄舟Original
2017-03-15 13:24:271632browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn