Ztracejici se pamet

Roman Fordinal fordinal na slovanet.sk
Pátek Listopad 15 08:05:42 MET 2002


Thursday, November 14, 2002, 9:00:25 PM, you wrote:

PS>         Zdravim vespolek.

PS> Mam nasledujici pokusny kod:

PS> $ cat mem.pl
PS> #!/usr/bin/perl -w
PS> use strict;
PS> warn "perl $] on $^O\n";
PS> my ($tmp, %tmp);
PS> $tmp{$tmp} = " " x 100 while ++$tmp < 50000;
PS> warn `ps -p $$ -o vsz=` =~ /(\d+)/, "\n";
PS> foreach (keys %tmp) {
PS>         warn `ps -p $$ -o vsz=` =~ /(\d+)/, "\n" unless $tmp++ % 10000;
PS>         s/./x/;
PS>         }
PS> warn `ps -p $$ -o vsz=` =~ /(\d+)/, "\n";

PS> $ ./mem.pl
PS> perl 5.006001 on linux
PS> 12912
PS> 15028
PS> 15188
PS> 15348
PS> 15508
PS> 15672
PS> 15828

PS> Podobne se to chova i na jinych operacnich systemech (irix, solaris) i s
PS> jinymi verzemi perlu (5.4, 5.8).

PS> Jednak by me zajimalo, proc mu utika pamet pri blbem nahrazovani znaku za
PS> znak.

PS> Taky mi ale vadi ztrata pameti pri foreach pres klice hashe. Lze nejak
PS> prochazet klice hashe, aniz by dochazelo k teto ztrate? Zrejme z nich udela
PS> pole, to ja ale k nicemu nepotrebuji, stacilo by mi je jakkoli dostavat
PS> jeden po druhem.
PS>                                                                 Diky    P.
s tymto istym mam problem pri fastcgi scriptoch, najvacsi narast sa
objavuje pri vyuzivani kniznice MySql.pm
i ked som sa to pokusal riesit velmi dlhu dobu, nepodarilo sa mi
problem nikdy vyriesit. jednoducho Perl neuvolnuje pamat pre dalsie
premmenne a co je divne dokonca i pri opakovanom vyuzivani objektov
zahlcuje stale viac a viac pamat (MySQL.pm)
zahlcovanie pamate som ciastocne znizil pouzivanim rovnakych
premmennych v jednotlivych sub {}, ktore som lokalizoval pomocou my.
viac som nedokazal a nikdy som ani nedostal uspokojivu odpoved na to
preco tomu tak je. (nepomohli ani hracky s undef, DESTROY object a
delete) :(

  

:
:..                      Roman Fordinal
:.: fordinal na slovanet.sk



Další informace o konferenci Perl