/*
* 关于Object类中finalize()方法 非重点,了解即可
* 1、源代码:
* protected void finalize() throws Throwable { }
* 2、finalize()方法只有一个方法体,
* 里面没有代码,而且这个方法是protected修饰
*
* 3、这方法不需要程序员手动调用,JVM垃圾回收器负责调用这个方法。
*
* 4、执行时机:
* 当一个java对象即将被垃圾回收器回收的时候,
* 垃圾回收器负责调用finalize()方法
* 5、finalize()方法时机上是SUN公司为java程序员准备的一个时机,
* 垃圾销毁时机,如果希望在对象销毁时机执行一段代码的话,这段代码
* 要写在finalize()方法中
*
* 6、静态代码块的作用是什么?
* static {
* 。。。。。
* }
* 静态代码块在类加载时刻执行,并且只执行一次
* 这是一个Sun准备的类加载时机。
*
* finalize()方法同样是Sun公司为程序员准备的一个时机
* 这个时机叫做垃圾回收时机
*
* 实例代码块的作用:
* {
* 。。。。
* }
* 在每次实例方法调用前,执行
* 7、注意:
* java中的垃圾回收器不是轻易启动的
* 垃圾太少,或者时间没到,等等
* 有可能启动,有可能不启动
* */
public class Note01 {
public static void main(String[] args) {
Person p = new Person();
p = null ;
// 把对象变成垃圾
// 多造点垃圾
/*int i = 0;
while(i<40000000){
i++;
Person p2 = new Person();
p2 = null;
}
// 三十万个垃圾都不行,四十万可以,四千万JVM就卡了,
Ctrl + c 都不行,四个亿的话,估计就废了
GC:求求你做个人吧
*/
// 一段代码可以建议垃圾回收器启动
Person p2 = new Person();
p2 = null;
System.gc();
// 建议启动,可能不启动,但启动概率会高些
// 没有启动---
}
}
class Person{
//解释:
// 重写finalize()方法
// Person对象被垃圾回收器回收的时候,垃圾回收器会自动调用这个方法
// 你该没了,我来打开你口罩,说说你还有啥想实现的??
protected void finalize() throws Throwable {
System.out.println(this + "即将被销毁》》》 最后的愿望是啥??");
}
}
ACAC Object中方法finalize
最新推荐文章于 2020-12-02 15:46:20 发布