On Tue, May 07, 2013 at 10:28:29PM +0100, Alberto Simões wrote:
> Hello
>
> Any kind of handle on DBI has a $h->{ChildHandles} that store weakrefs to
> all child handles created. For
> instance, on a $dbh, you will get a list of weakrefs to $sth you create.
>
> When one of those $sth gets out of scope, its count get to 0. What Perl
> does to the weakref, is to
> change it to an undef value (Perl isn't able to remove that element from
> the array).
>
> Although a single undef takes less memory than a complete $sth object, it
> takes memory space. And if we
> get a lot of these undef values, things get worse.
The DBI purges undef entries from ChildHandles from time to time.
(Specifically whenever the number of entries is a multiple of 120.)
At this stage in the life of the DBI I think it's reasonable to assume
that there isn't a leak in the DBI itself. If there was then a lot of
people would be affected and complaining about it.
Tim.