finalize 是基础类 java.lang.Object 的一个方法
    在垃圾收集器将该对象清除出内存之前会先调用它的finalize方法(不能主动调用)
    它的设计目的是保证对象在被垃圾收集前完成特定资源的回收
    finalize 机制现在已经不推荐使用 并且在 JDK 9 开始被标记为 deprecated
    开发中应尽量避免使用finalize 可能会导致内存泄露

    对象分为三种状态
    1)可触达的、可触及的
    2)可复活的
    意思就是对象的引用在某个方法中被设为null了 该对象本应被垃圾回收
    但回收前会先调用finalize方法 在finalize方法中又给该对象赋值引用
    那么垃圾回收就无法回收这个对象
    3)不可触达的

    1. public class TestMain{
    2. public static TestMain ts;
    3. public static void main(String[] args) throws Exception {
    4. ts = new TestMain();
    5. ts = null;
    6. System.gc();
    7. Thread.sleep(1000);
    8. System.out.println(ts);
    9. }
    10. protected void finalize() throws Throwable{
    11. System.out.println("finalize 方法执行");
    12. //重新赋值 对象复活
    13. ts = this;
    14. }
    15. }