[Cascavel-pm] Memoria x Perl

Donato Azevedo donatoaz em gmail.com
Quarta Abril 5 16:40:49 PDT 2006


On 4/5/06, Lorn <lorn.br em gmail.com> wrote:
> Rau mongers!
>
> Estou com uma duvida, tem um programa em perl aqui na empresa, que indexa
> documentos, e enquanto ele vai indexando a memoria vai caindo, e no final,
> ele fica usando a memoria virtual, depois que o programa termina ele não
> ...

a unica razao para o seu script gerar um memory leak eh se voce usa
self references (algo que referencia a si mesmo)
porque?
bem, porque o perl (ao contrario do parrot, que pelo que me lembro
trabaha com tracing collector) trabalha com contagem de referencias,
ou seja, ele conta quantas referencias existe para algo.. se nao ha
nenhuma entao manda ele pro lixo.. como um self referenced object
referencia a si mesmo, so voce explicitamente destruindo-o para
liberar a memoria..
veja o que esta escrito no site do parrot
<www.parrotcode.org/faq/>
Self-referential structures live forever

    Or nearly forever. Since the only time an object is destroyed is
when its refcount drops to zero, data in a self-referential structure
will live on forever. It's possible to detect this and clean it up, of
course... by implementing a full tracing garbage collector. That means
that you have two full garbage collection systems rather than one,
which adds to the code complexity.
</www.parrotcode.org/faq/>

mas atee isto tem solucao.. leia sobre weak references que resolve o
problema de self references.



--
------------------------------------------------------------------------
Donato Azevedo - UFMG - Eng Ctrl Aut
Good algorithm design is important, and is both a science and an art.
Slackware user #390325


Mais detalhes sobre a lista de discussão Cascavel-pm