On Wed, Dec 24, 2008 at 11:47:45AM -0500, Stuart Watt wrote:
>>
> Devel::Leak saved me several times over, but I did need to build a
> debugging Perl to see the contents. When I did that, most of the leaks I
> was responsible for were easy to find and fix. I just used
> NoteSV/CheckSV in the loop, to pick up anything left from a previous
> iteration. In the end I still found DBI and some DBDs were responsible
> for most of my missing memory, and upgrading them took away of lot of
> issues.
Which "loop" are you referring to?
perl -V shows -DDEBUGGING=-g
I tried using Devel::Leak but it ended up not very useful. Perhaps using
it incorrectly. For example, if I wrap the eval block in
handle_request() like this:
use Devel::Leak;
my $handle;
Devel::Leak::NoteSV($handle);
eval {
if ($class->debug) {
my $secs = time - $START || 1;
my $av = sprintf '%.3f', $COUNT / $secs;
my $time = localtime time;
$class->log->info("*** Request $COUNT ($av/s) [$$] [$time] ***");
}
my $c = $class->prepare(@arguments);
$c->dispatch;
$status = $c->finalize;
use Devel::Cycle;
#find_cycle( $c );
};
Devel::Leak::CheckSV($handle);
Then I get a bunch of output like:
new 0xac62a60 :
new 0xac62a70 :
new 0xac62a80 :
new 0xac62a90 :
By a "bunch" I mean 16,979. So, I don't quite think I'm doing it
correctly. ;)
--
Bill Moseley
[email protected]
Sent from my iMutt
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/