[Roma.pm] GC
Oha
oha at oha.it
Thu Apr 3 07:38:28 CST 2003
On Thursday, April 3, 2003, at 02:24 PM, Aldo Calpini wrote:
> ossia, $x è andata out-of-scope, ma ha ancora un refcount grazie
> a $y quindi il valore (42) non viene garbaggiato(?).
tecnicamente un memory leak. a meno che non riesca in qualche modo a
riutilizzare la risorsa, cosa che dubito.
> Destruction happens automatically via Perl's garbage collection
> (GC)
> system, which is a quick but somewhat lazy reference-based GC
> system.
> To know what to call, Perl insists that the destructor be named
> DESTROY.
> Perl's notion of the right time to call a destructor is not
> well-defined
> currently, which is why your destructors should not rely on when
> they
> are called.
questo normalmente e' vero per qualsiasi GC, afaik.
> sembrerebbe di sì. Parrot, del resto (l'engine del Perl6 prossimo
> venturo), utilizza una tecnica di tipo "mark & sweep" su cui però non
> so dirti altro :-).
che, se ricordo bene, e' proprio il meccanismo che prevede la rimozione
di tutti i mark. la partenza da un root markando tutti i collegati e
quindi la rimozione di quelli non markati.
(mh... la prossima volta evito le K improprie...)
>> e se si, dato che nessuno mi garantisce la "pulizia" del codice dei
>> moduli che uso, sono obligato a usare il perl atomico anziche' come
>> demone?
>
> cosa intendi per "come demone"?
caso A:
inetd ascolta su una porta e, ad ogni richiesta, lancia un programma
perl
alla fine, il programma perl (task) viene chiuso e quindi la memoria
liberata (sticazzi se ci sono leak)
caso B:
il perl ascolta su una porta e risponde lui stesso. in questo caso se
ad ogni processo avviene un leak, si rischia (dopo un tempo
arbitrariamente non troppo alto) che il sistema si trovi senza ram [1]
Oha
[1] provate a far gigare su una macchina unix quanto segue:
int main(int argc, char* argv[])
{
int size = 1024;
while(1)
{
if(malloc(size)) size*=2;
else size= (size+1)/2;
}
}
--
"L'uomo ha inventato il linguaggio per soddisfare il suo profondo
bisogno di
lamentarsi."
-- Lily Tomlin
More information about the Roma
mailing list