Java基础-finalize方法

package com.hspedu.finalize_;

public class CourseTest {
public static void main(String[] args) {

/*
* 1、当对象被垃圾回收时,系统自动调用对象的finalize方法,
* 子类可以重写该方法,做一些释放资源的操作
* 2、当某个对象没有任何引用的时候,jvm会认为是该对象是垃圾对象,
* 在回收这个对象前会调用该对象的finalize方法
* 3、此时可以重写finalize方法写自己的业务需求,比如释放资源
* 资源:数据库连接、打开的文件流
* 如果不重写finalize方法,那么就会调用Object类的finalize的方法,即默认处理
* 如果重写了finalize方法,就实现重写的逻辑
* 实际开发中基本不用finalize方法,更多应付面试
*
* */
// Car bmw = new Car("宝马");
// bmw = null; // 此时car对象就是一个垃圾对象,垃圾回收器就会回收/销毁对象
// System.gc(); 主动触发垃圾回收机制
// System.gc();
for (int i = 0; i < 100; i++) {
Car car = new Car("bmw");
car = null;
System.gc();
}
System.out.println("======程序退出了=====");

}
}


class Car {

// 属性、资源...
private String name;

public Car(String name) {
this.name = name;
}

// 重写finalize
@Override
protected void finalize() throws Throwable {
System.out.println("销毁了汽车" + name);
System.out.println("释放某些资源..");
}
}
posted @ 2022-02-24 16:01  柯南同学  阅读(196)  评论(0编辑  收藏  举报