即使对象仍然可到达,也会为具象对象调用 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
`