Devel::Events::Handler::ObjectTracker - A Devel::Events that tracks leaks
use Devel::Events::Handler::ObjectTracker;
use Devel::Events::Generator::Objects;
my $tracker = Devel::Events::Handler::ObjectTracker->new();
my $gen = Devel::Events::Generator::Objects->new(
handler => $tracker,
);
$gen->enable(); # start generating events
$code->();
$gen->disable();
use Data::Dumper;
warn Dumper($tracker->live_objects);
This object will keep track of every object created and every object destroyed
based on the "object_bless" and
"object_destroy" events. Reblessing is
accounted for.
This handler doesn't perform any magical stuff,
Devel::Events::Generator::Objects is responsible for raising the proper
events.
- live_objects
- A Tie::RefHash::Weak hash that keeps an index of every live object and the
"object_bless" event that created
it.
- class_counters
- Keeps a count of the live instances per class, much like
Devel::Leak::Object.
- object_to_class
- USed to maintain the "class_counters"
hash.
- new_event @event
- Delegates to "handle_object_bless" or
"handle_object_destroy"
- handle_object_bless @event
- Adds an entry in the "live_objects"
table.
- event_to_entry @event
- Munges event data into an entry for the
"live_objects" table.
- handle_object_destroy
- Decrements the "class_counters"
counter.