和星辰一起学习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("即将被销毁!");
}
}
好啦,今日份的快乐你收到了吗,如果小可爱们觉得星辰给你们带来了快乐,支持一下星辰好不好嘞,给星辰点个赞吧,爱你们哟(〃'▽'〃)~~