なんか一人で書き込んでるな (orz
luabindのほうが大問題に思えてきた

class 'abc'
function abc:__init(name) self.name=name ; print("initialize:"..self.name) end
function abc:__finalize() print("finalize:"..self.name) end
a=abc("1")
b=abc("2")
a.p=b;b.p=a --循環
a=nil;b=nil
collectgarbage("collect")

これも__finalizeが呼ばれない模様
上記コードのaもbもuserdataで多分GCがuserdata内部で
持ってる参照を追ってないためリークしてるのではと
予想してみたけど、どうでしょ。