I am having what appears to a memory leak problem on a mod_perl project I am working on. On the worst case web page (a search results page) I am leaking an average of about 160k per page load! I think I've finally isolated the problem and it appears to be related to DBI. It's very possible that I am doing something wrong to cause the problem. :-)
First of all, some version and module information. I am using DBI 1.50 with DBD::ODBC 1.13. I am using persistent database connections via the Apache::DBI module. The project is using mod_perl and Apache::ASP. I isolated the problem by commenting out great swaths of code until the problem went away, and then slowly adding them back in until it reappeared. My first thought was that it had something to do with fetchrow_hashref. I have a loop like this: while ($row = $sth->fetchrow_hashref) { # do stuff here } All of the functionality inside the loop has been commented, but my memory leak still happens. However, if I comment the loop entirely, the leak goes away (well, about 158k of it at least!). If I replace the loop with something like: while ($row = $sth->fetchrow_arrayref) { # do stuff here } ... no leak. I need to get at some of the column names, though, so I added this line before the loop: my $column_names = $sth->{NAME}; ... and the leak was back! It stays even if I don't save the column names into a variable, but just touch them: $sth->{NAME}; In fact, it even stays if I remove the loop entirely and just include the line above! Any ideas why this might be happening and what I could do to fix it or work around it? Is there possibly something I'm doing wrong here? My next step is going to be to try to make some kind of simple test outside of the framework of my web probject that reproduces the same behavior. I'll post that here when I have it. Thanks in advance for any insight, David Brewer