Андрей Козицкий Asked:2020-07-22 03:15:53 +0800 CST2020-07-22 03:15:53 +0800 CST 2020-07-22 03:15:53 +0800 CST PreDestroy注解,与finalise()比较 772 是否使用 @PreDestroy 不好的做法(与 finalize 一样)? java 1 个回答 Voted Best Answer Sergey Gornostaev 2020-07-22T03:57:29+08:002020-07-22T03:57:29+08:00 首先,如果我们要在 SpringBean 生命周期事件处理程序和 POJO 终结器之间进行类比,那么应该在@PreDestroy和之间进行类比finalize()。其次,不,不是。要理解这一点,知道为什么不建议使用就足够了finalize(): 它的调用根本无法保证; 调用时,对象可以创建对自身的引用并阻止自己的组装; 调用finalize()类方法时,不会从超类调用同一个方法,在某些情况下可能会导致资源释放不正确; 终结器中抛出的异常将丢失; 它会减慢垃圾收集速度。根据布洛赫的说法,大约是 430 次。 同时,@PreDestroy它与垃圾回收完全没有关系,不影响性能,一般完全按照正确的架构原则行事。
首先,如果我们要在 SpringBean 生命周期事件处理程序和 POJO 终结器之间进行类比,那么应该在
@PreDestroy
和之间进行类比finalize()
。其次,不,不是。要理解这一点,知道为什么不建议使用就足够了finalize()
:finalize()
类方法时,不会从超类调用同一个方法,在某些情况下可能会导致资源释放不正确;同时,
@PreDestroy
它与垃圾回收完全没有关系,不影响性能,一般完全按照正确的架构原则行事。