在 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/