Thanks for pointing me to Test::Memory::Cycle. It and Devel::Cycle (on which it's based) appear to work on a predictive basis. If they find no cycles, or only weakened ones, you could expect there to be no memory leaks.

The proposed Test::Weaken checks both before and after the fact to see that the memory was freed. It certainly would be useful in testing the other approach. :-)

I also now find a Devel::Leak, which actually looks at the Perl internals. However, it requires Perl to have been compiled with the -DDEBUGGING flag set, whereas Test::Weaken works on Perl compiled the ordinary way.

Perhaps which approach is best is a matter of specific situation and taste. I'd think the user would want to have modules implementing both approaches available in CPAN and to be able to take their choice. TIMTOWTDI and all that.

I do notice that Devel::Cycle can handle cycles that happen via references to closures, something my code doesn't at this point.

thanks, very helpful, jeffrey


In reply to Re^2: A way to test that circular references are actually freed by Jeffrey Kegler
in thread A way to test that circular references are actually freed by Jeffrey Kegler

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.