重要的话说在前面,这个知识点有个印象就行了,工作了几乎不会用,因为很少需要重写这个方法!!!!
1、finalize在object类中的方法定义:
finalize()
当垃圾收集确定不再有对该对象的引用时,垃圾收集器在对象上调用该对象。
2、小结:
3、代码演示
a.应为拥有垃圾回收算法,所以结果可能不是你所想的那样。
package com.dsstudy; public class Test { public static void main(String[] args) { A a = new A("ds"); a=null; System.out.println("退出程序.."); } } class A{ private String name; public A(String name) { this.name = name; } @Override protected void finalize() throws Throwable { System.out.println("我调用了finalize方法..."); } }
运行结果:
b.用System.gc();方法进行主动呼叫垃圾回收,但是这个方法并不一定也能生效(不过一般能生效),比如叫保洁阿姨打扫卫生,但是保洁阿姨有其他事情并没有来,呼叫System.gc();方法有点类似于这个
package com.dsstudy; public class Test { public static void main(String[] args) { A a = new A("ds"); a=null; System.gc(); System.out.println("退出程序.."); } } class A{ private String name; public A(String name) { this.name = name; } @Override protected void finalize() throws Throwable { System.out.println("我调用了finalize方法..."); } }
运行结果: