To answer your first question, take a look at Perl's FAQ:
http://perldoc.perl.org/perlfaq3.html#How-can-I-free-an-array-or-hash-so-my-program-shrinks?

Amine pisze:
> Hi all,
> 
> Look at the following script: 
> -----------------------------------------------
> 
> use Thread qw(:DEFAULT async yield); 
> 
> sub func
> {
> my @b;
> for ($i=0;$i<1000000;$i++)
> { $b[$i] = 'Perl';}
> <STDIN>;
> undef @b;
> print '@b memory returned..';
> <STDIN>;
> }
> 
> @param = ();
> my $t = Thread->new(\&func, @param); 
> $result = $t->join;
> 
> print "End of thread...\n";
> <STDIN>;
> 
> --------------------------------------------------
> 
> On Windows click on Ctrl-Alt-del and click on Performance to 
> look at the available memory. 
> 
> When you will run this script and the line 
> print "End of thread...\n"; 
> is executed all the memory used will be returned by 
> Perl.
> 
> But  when the line 'undef @b' is executed ,  all the used memory 
> is not returned. (please look on the Task manager)...
> So my question is:
> How can i 'force' Perl to return the used memory ?
> 
> 
> My second question is this:
> 
> Look at the following script:
> 
> -----------------------------------------------
> 
> sub func
> {
> my @b;
> for ($i=0;$i<1000000;$i++)
> { $b[$i] = 'Perl';}
> <STDIN>;
> undef @b;
> print '@b memory returned..';
> <STDIN>;
> }
> 
> func;
> func;
> 
> print "end ...\n";
> <STDIN>;
> 
> ------------------------------------------------
> 
> 
> When you will run this script , you will see that the 
> second call to func() does take a lot of time(much more 
> than the first call) , why ?
> 
> 
> 
> Regards,
> Amine.
> 
> 
>  
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Perl-Win32-Users mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
> 
_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to