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