The problem I was refering to was obscure varnames/references that u don't know about holding the door open to the SV, thus preventing garbage collection.

But if you pass a reference to a locally scoped lexical out of that scope, then wherever you passed it to, may try to access that variable via the reference. In other words, you don't want it to disappear until that reference has been disposed of.

Once the variable holding that reference goes out of its scope, then it will be GC'd. And a part of the process of GC'ing a reference, is to decrement the ref count of the thing it points at. And if doing that decrement drops the count to zero, then the now-out-of scope original lexical will also be GC'd.

This mechanism works and has worked for a long time. Unless you stick a copy of the reference in a global variable and then forget about it, the reference will go out of scope, and the referent will be GC'd exactly when that happens.

My second concern was when/where/how/if garbage collection takes place at all. It would be nice if there were a debugging feature where Perl would tell u when it gc'd something.

There is. If you want to get into building your own perl and build a debug version, then there are flags that can be set to cause all memory allocations and frees to be traced. I don't know how to do it--I've never felt the need--but it's probably on a case of a make file/configure setting, and some environment variables. Followed by wading through a megasized trace file staring at a gob load of 8 digit hex values. Good luck with that.

But if you'd posted the code 3 days ago as asked, your problem would probably be fixed by now.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."

In reply to Re^9: Massive Perl Memory Leak by BrowserUk
in thread Massive Perl Memory Leak by wagnerc

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.