java垃圾收集

来源:互联网 发布:游戏 ios 知乎 编辑:程序博客网 时间:2024/06/05 08:55

 在java中没有析构函数,但有finalize()方法,他被声明为protected,finalize()会在对象被回收的时候执行,但不可以将它当做析构函数来使用,因为不知道对象何时被回收,所以就不知道finalize()真正执行的时间。但可以使用finalize()来进行一些相关资源的清除工作,如果这些动作与立即性的收尾动作没有关系的话。

如果确定不使用某个对象,可以在参考该对象的名称上指定null;表示这个名称不在参考至对象,不被任何名称参考的对象将被回收资源。可以用System.gc()建议程序进行垃圾收集,如果建议被采纳,则对象资源会被回收,回收前会执行finalize()方法。

public class UseGc

{

public static void main(String[] args)

{

System.out.prtintln("请按ctrl + c终止程序");

GcTest obj1 = new GcTest("对象1");

GcTest obj2 = new GcTest("对象2");

GcTest obj3 = new GcTest("对象3");

//命令名称不参考至对象;

obj1=null;

obj2=null;

obj3=null;

//建议回收对象

System.gc();

while(ture);//不断执行程序 

}

}

在程序中加入无限循环的目的:让垃圾收集在程序结束前有机会执行