在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);//不断执行程序
}
}
在程序中加入无限循环的目的:让垃圾收集在程序结束前有机会执行
本文介绍了Java中Finalize方法的基本概念及其使用场景。详细解释了如何通过设置对象引用为null并调用System.gc()来建议垃圾回收器回收资源的过程。此外还提供了一个示例程序帮助理解。
2397

被折叠的 条评论
为什么被折叠?



