即使对象还可访问,也会为重新实例化的对象调用Finalize。它将在正确的时间第二次被调用。
`
user=> (def x (reify Object (finalize [o] (println "OH MY!"))))
'user/x
user=> (System/gc)
nil
OH MY!
user=> x
<user$reify1496 user$reify1496@53fb35af>
user=> (System/gc)
nil
user=> (def x nil)
'user/x
user=> (System/gc)
nilOH MY!
`
Deftype似乎工作正常
`
user=> (deftype T [] Object (finalize [o] (println "great success")))
user.T
user=> (def y (->T))
'user/y
user=> (System/gc)
nil
user=> (def y nil)
'user/y
user=> (System/gc)
great success
`