- 这个方法是protected修饰的
- 在Object中的源代码是
protected void finalize() throws Throwable{ }
- 只有一个方法体, 里面没有代码 这 个方法不需要程序员手动调用,JVM的垃圾回收期负责调用这个方法.不像equals toString 是需要你写代码调用的,finalize只需要重写,重写完了会由GC调用
- 执行时机: 当一个java对象即将被垃圾回收期回收的时候,垃圾回收期负责调用finalize()方法
- finalize()方法实际上是SUN公司为java程序员准备的一个时机,垃圾销毁时机.如果希望在对象销毁时机执行一段代码的话, 这段代码要写到finalize中
- 静态代码块的作用是什么?
static{
…
}
静态代码块在类加载时刻执行,并且只能执行一次,这是一个SUN公司准备的类加载时机
finalize()方法同样是SUN为程序员准备的一个时机,这个时机是垃圾回收时机 - java中的垃圾回收器不是轻易启动的,垃圾太少,或者时间没到,种种条件下,有可能启动有可能不启动
- 有一段代码可以建议垃圾回收器启动
//建议垃圾回收器启动,只是建议,可能不启动,也可能启动,启动的概率高一些
System.gc();