//此类说明了 finalize 关键字以及 System.gc() 的作用
/*
finalize 类似 c++中析构函数,表示对象即将消亡时,调用此方法
gc() 方法表示把拉级回收器启动,把拉圾收走
*/
package test;
class TestGC {
private String name;
private int age;
public TestGC() {
}
public TestGC(String name) {
this.name = name;
}
public TestGC(String name,int age) {
this(name);
this.age = age;
}
//每个类里面都有finalize方法,和构造方法功能相反,一个是对象产生时调用,一个是对象消亡时调用
@Override
public void finalize() { //测试,为了看到效果!!!!!
System.out.println(this.name+"开始清理对象...");
}
public static void main(String[] args) {
TestGC gc1=new TestGC("gc1");
TestGC gc2=new TestGC("gc2");
TestGC gc3=new TestGC("gc3");
new TestGC("gc4");//该对象一产生即成为拉圾
gc3=null;
System.gc();
System.out.println("未清理");//先输出这个,说明什么时间GC,是由JVM控制的。
gc1=null;//将对象置null,或没有对象指向,均能触发GC
System.gc();
}
}
/*
输出结果:(gc1、gc2、gc3的输出顺序不确定,也是由JVM决定的)
未清理
gc3开始清理对象...
gc1开始清理对象...
gc4开始清理对象...
*/