1 # Dobrica Pavlinusic, <dpavlin@rot13.org> 06/22/07 14:35:38 CEST
8 use base qw/Class::Accessor/;
9 __PACKAGE__->mk_accessors( qw/
15 #use Carp qw/confess/;
16 use Data::Dump qw/dump/;
17 use Devel::Events::Handler::ObjectTracker;
18 use Devel::Events::Generator::Objects;
19 use Devel::Size 'total_size';
24 CWMP::MemLeak - debugging module to detect memory leeks
30 my $leek = CWMP::MemLeak->new({
38 my $self = $class->SUPER::new( @_ );
40 warn "created ", __PACKAGE__, "(", dump( @_ ), ") object\n" if $self->debug;
42 $self->tracker(Devel::Events::Handler::ObjectTracker->new());
44 Devel::Events::Generator::Objects->new(handler => $self->tracker)
47 $self->generator->enable();
54 my $size = $leek->report;
58 my $empty_array = total_size([]);
63 $self->generator->disable();
65 my $leaked = $self->tracker->live_objects;
66 my @leaks = keys %$leaked;
68 my $size = total_size([ @leaks ]) - $empty_array;
70 warn "leaked $size = ",dump( $leaked ),$/ if $size > 2;
73 $self->generator(undef);
74 $self->tracker(undef);