即使实体化对象仍然可达,也会为它们调用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
`