in reply to How to avoid closures and memory leaks.

Use curry::weak from curry or Method::WeakCallback.

Those help when your memory leaks are due to subs wrapping method calls as for instance:

$self->{watcher} = AE::io $fh, 0, sub { $self->_read(@_) };