[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