in reply to Massive Memory Leak

Perl's garbage counter can not handle circular references. $c->{data} = $stripper->format(parse_html($c->{data})); could be one part where things go wrong.
Otherwise I would suggest you to look at some modules like Devel::Leak, Devel::LeakTrace, Devel::Cycle, Object::Destroyer, Devel::Monitor to find the bad boys.