Java之Object类中的finalize()方法【今日份搞笑】

和星辰一起学习java鸭!

本节内容了解即可,星辰分享是因为这个莫名戳到了星辰的笑点,星辰在学习的过程中笑声都没停过,所以来这里把我的快乐分享给大家呀^ v ^!!

 好啦好啦进入正题哈!!

声明一下哦,在JDK 9之后这个方法就被停用了,但是JDK 8中还有,如今JDK 8也还算是主流,所以了解一下不亏哦

关于Object类中的finalize()方法
    1、在Object类中的源代码:
        protected void finalize() throws Throwable { }
    2、finalize()方法只有一个方法体,里面没有代码,是由protected修饰
    3、不需要程序手动调用,JVM的垃圾回收器负责调用这个方法
        和toString()方法、equals()方法不同,不需要调用,只需要重写即可
       GC【垃圾回收器】:负责调用finalize()方法
    4、finalize()执行时机:当一个java对象即将被垃圾回收器回收的时候
        垃圾回收器负责调用finalize()方法
    5、finalize()方法是SUN公司为java程序员准备的一个时机【垃圾销毁时机
        如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法中去
    6、【来了来了,最搞笑的一段,哈哈哈
        java中的垃圾回收器不是轻易启动的
        垃圾太少或者时间没到,种种条件下,有可能启动,也有可能不启动

public class FinalizeTest {

	public static void main(String[] args) {
		
		//多造点垃圾,让垃圾回收器启动
        //这边星辰测试的这么多次成功输出
        //但这个时候JVM已经受不了了,哈哈哈,就是已经卡了【JVM被逼疯了】
        //小可爱们也可以尝试一下,真的很好玩
		for(int i = 0; i < 10000000; i++) {
			//创建对象
			Person p = new Person();
			//把Person对象变成垃圾
			p = null;
		}

	}

}
class Person{

	//重写finalize()方法
	//Person类型的对象被垃圾回收器回收的时候,垃圾回收器负责调用p.finalize();
	protected void finalize() throws Throwable { 
		System.out.println("即将被销毁!");
	}

}

这边星辰再介绍一个提高GC启动概率的代码

运用System.gc();

但这个也只是建议(!!)垃圾回收器启动,具体启动不启动还要看运气,嘿嘿,星辰运气比较好,运行了5次,启动了5次,有小伙伴用循环,运行了500次,就启动了1次,GC好不给面子的说

具体代码运用如下【有兴趣的小可爱可以试一试,看看你的运气怎么样】 

public class FinalizeTest {

	public static void main(String[] args) {
		//创建对象
		Person p = new Person();
        //把Person对象变成垃圾
		p = null;
        //建议GC启动
		System.gc();

	}

}
class Person{

	//重写finalize()方法
	//Person类型的对象被垃圾回收器回收的时候,垃圾回收器负责调用p.finalize();
	protected void finalize() throws Throwable { 
		System.out.println("即将被销毁!");
	}

}

好啦,今日份的快乐你收到了吗,如果小可爱们觉得星辰给你们带来了快乐,支持一下星辰好不好嘞,给星辰点个赞吧,爱你们哟(〃'▽'〃)~~ 

 


版权声明:本文为qq_58794223原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。