Java 清理步骤

标签 java exit-code

在 Java 中,我记得有一些方法可以覆盖,以便在 jvm 退出或类被销毁时调用,几乎就像一些清理步骤?我似乎在任何地方都找不到它叫什么。有人知道它叫什么,我只是找不到它?

最佳答案

您可以添加 shutdown hook当 JVM 通过 Runtime.addShutdownHook() 终止时将被调用.

Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() {
        // ...
    }
});

如果 JVM 异常退出,则不能保证关闭 Hook 会运行。

正如@Kaleb 指出的那样,您可以重载 Object.finalize(),当对象符合垃圾回收条件时将调用它。正如 Josh Bloch 在 Effective Java 中指出的那样第 7 项:

Finalizers are unpredictable, often dangerous and generally unnecessary

紧随其后(Josh 强调):

It can take arbitrarily long between the time that an object becomes unreachable and the time that its finalizer is executed ... never do anything time-critical in a finalizer.

如果您需要清理类中的资源,请在 finally block 中执行或实现 close 方法(或类似方法)而不是依赖 finalize() .

关于Java 清理步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5368758/

相关文章:

java - 有没有办法辨别驱动器是否是内部没有光盘的 dvd/cd/blu ray 驱动器?

java - 使用 Java 的 JComponent repaint()

java - android ksoap2 java.lang.IllegalArgumentException : size <= 0

c - C 编程 : Exit endless loop if written inside

Python 子进程返回错误的退出代码

python - 如何使用 python 停止程序的执行?

java - 在 Hadoop 中映射和减少类属性

java - 为什么以毫秒为单位添加时间会显示不正确的结果?

c++ - 如何直接从构造函数结束 C++ 代码?

c - 当命令访问不存在的文件时来自 popen 的错误状态