即使在对象仍可访问时,也会对实体化对象调用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
`