[Java] 新版本的Java将会废弃Object.finalize(),并添加新的java.lang.ref.Cleaner

下面这俩RFE相映成趣:

结合这个讨论串来看更美味:RFR 9: 8165641 : Deprecate Object.finalize

以后新学Java的同学大概可以少为学习finalizer的用法而痛苦了。嗯不,是换成“如何使用java.lang.ref.Cleaner”而痛苦(逃

顺带一提,这个新的 java.lang.ref.Cleaner 其实是以前的 sun.misc.Cleaner 的公有API移植版。对后者比较熟悉的同学应该会见过它在 DirectByteBuffer 等实现中的用法。

Cleaner 是基于 PhantomReference 的,所以不会像finalizer那样有复活对象的机会,所以坑会比finalizer稍微少一点。嗯稍微少一点…

编辑于 2017-03-11 17:21