在Java中清理Object的最佳方法是什么?

我们在C中没有任何析构函数.

Q1.我们应该如何清理java中的任何Object.

Q2.有没有一个最后的块的替代.

Q3.有时我们必须从我们的班级明确地调用初始化/终止第三方代码.

public classs MyClass{
    public MyClass(){
        ThirdPartyInitialize();
    }

    protected void finalize(){
        ThirdPartyTerminate();
    }
}

这是正确的方法吗?

最佳答案
你通常不能自己“清理”Java对象.垃圾收集器决定何时清理对象.您可以通过将其设置为null来指示何时完成对象引用,但通常只是让其超出范围就够了.无论哪种方式,您仍然无法控制垃圾收集.

finally块用于执行是否从try块抛出异常,并且是执行清理的最佳位置.一般来说,您只能清理非对象资源(如开放流).

finalize()不能保证被调用,因为在程序退出之前不能保证垃圾回收器被调用.它不是像C的析构函数,因为C的析构函数总是被调用,你可以依靠它们被调用.你不能依靠finalize()被调用.

所以1)使用finally块释放非对象资源2)让垃圾收集器清理对象资源3)你可以通过将它设置为null(如果在一个长时间运行的方法.

转载注明原文:在Java中清理Object的最佳方法是什么? - 代码日志