This is not true. Put it in a loop and see for yourself: the process memory does not increase with each iteration of the loop.
for(1 .. 10_000_000)
{
our @a = (1);
our @b = (1);
}
All that the “leak message” (probably) tells you that the program exited with outstanding variables. To disable this message, cancel the variables until the end of the program:
perl -MDevel::LeakTrace::Fast -e 'our @a = (1); our @b = (1); undef @a; undef @b;'
FWIW, the same message is printed under perl 5.10.0, so I'm not sure if the perl update is the answer.
As for why the message appears in some cases, but not in others, this is probably a whim of Devel :: LeakTrace :: Fast. Many Perl leak detection modules have "features" (to say the least).
: 100% - , . , .
Devel:: * . : , . . , , . , script. , , , Devel:: (, Devel:: Cycle).