<div dir="ltr"><div dir="ltr">Добрый день.<br><br>Почему тут память течёт? Кто-нибудь встречался с таким?<br><br>==================== code ======================================<br><br>use utf8;<br>use strict;<br>use warnings;<br><br>use Memory::Usage;<br>use Test::More;<br><br>my $text_ru = "Привет МИР!";<br>my $text_en = "Hello World!";<br><br>subtest "test1" => sub {<br>    my $mu = Memory::Usage->new();<br>    $mu->record('BEGIN');<br><br>    my $counter = 0;<br>    for ( 1..1_000_000 ) {<br>        # $text_en =~ m/Hello\sWorld/ && $counter++;<br>        $text_en =~ m/Привет\sМИР/ && $counter++;<br>    }<br><br>    $mu->record('END');<br><br>    print $mu->report(), $/;<br><br>    my $mu_state = $mu->state();<br>    cmp_ok $mu_state->[-1]->[-1] - $mu_state->[0]->[-1], '<=', 10,<br>        "No more than 10 KB of memory was used for the data.";<br><br>    # cmp_ok $counter, '==', 1_000_000, "All matched";<br>    cmp_ok $counter, '==', 0, "There are no matches";<br>};<br><br>done_testing;<br>exit(0);<br><br><br>======================= result v5.26.1 Ubuntu 18.04.2 LTS ===============<br><br>$ perl -v<br><br>This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi<br><br># Subtest: test1<br>  time    vsz (  diff)    rss (  diff) shared (  diff)   code (  diff)   data (  diff)<br>     0  32480 ( 32480)   9904 (  9904)   4544 (  4544)   2016 (  2016)   5868 (  5868) BEGIN<br>     0  134780 ( 102300)  112336 ( 102432)   4544 (     0)   2016 (     0)  108168 ( 102300) END<br><br>    not ok 1 - No more than 10 KB of memory was used for the data.<br>    #   Failed test 'No more than 10 KB of memory was used for the data.'<br>    #   at ./memory_leak.t line 28.<br>    #     '102300'<br>    #         <=<br>    #     '10'<br>    ok 2 - There are no matches<br><br>======================= result v5.12.4 Ubuntu 12.04.5 LTS ===============<br><br>$ perl -v<br><br>This is perl 5, version 12, subversion 4 (v5.12.4) built for x86_64-linux<br><br># Subtest: test1<br>  time    vsz (  diff)    rss (  diff) shared (  diff)   code (  diff)   data (  diff)<br>     0  28084 ( 28084)   7196 (  7196)   1912 (  1912)   1248 (  1248)   5664 (  5664) BEGIN<br>     1  28084 (     0)   7196 (     0)   1912 (     0)   1248 (     0)   5664 (     0) END<br><br>    ok 1 - No more than 10 KB of memory was used for the data.<br>    ok 2 - There are no matches<br>    1..2<br><br><br></div></div>