id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
1167	Think about resource management	guest	axel	"It is very easy to get a memory leak. For example these buttons will never get freed:
{{{
    replicateM_ 1234 $ do
        b <- buttonNew
        onStateChanged b $ \_ -> widgetGetSize b >>= print
}}}

You can correct this example with eventGetWindow, but that doesn't apply to signals.

The memory leaks in a typical app are small. However, avoiding these leaks may involve API changes so it's important to think about. I suggest, at least, an explicit ""objectUnref"" action that cancels the finalizer. Then app writers can take care of memory management.

As a nicer API, since a UI is just a tree, perhaps Containers could automatically manage the refs for their children."	task	new	normal	1.0	general (Gtk+, Glib)	0.10.2			
