【问题标题】:Is it ever appropriate to use finalize() in Java?在 Java 中使用 finalize() 是否合适?
【发布时间】:2014-06-04 22:59:12
【问题描述】:

我有一个大量使用 C++ JNI 共享对象的 Android 项目。事实上,我有一个 Java 对象来管理从 JNI 调用分配的资源。在那个特定的 Java 对象上,我使用 finalize() 调用来处理当对象被销毁时释放这些本机资源。

这一切似乎都有效,我没有看到任何内存泄漏,但是,我听说你不赞成使用 Java 终结器(Effective java,第 2 版第 27 页。第 7 项:避免终结器等) .是否存在适合使用 finalize() 的情况,例如我上面描述的情况?我不知道还能做些什么来确保这些原生资源得到清理。

【问题讨论】:

    标签: java android c++ memory-management


    【解决方案1】:

    我相信您的案例是appropriate to use a finalizer 的少数案例之一。

    【讨论】:

    • @bstar55 应该是第一个。
    • @bstar55 没有代码可以传达关于何时使用所述代码的约定。在 Javadoc 的情况下,文档是代码的一部分,因此如果您查看了代码,无论如何都会找到文档。
    猜你喜欢
    • 1970-01-01
    • 2012-03-22
    • 2017-04-20
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多