[Cascavel-pm] Threads não liberam memória

Geovanny Junio geovannyjs em gmail.com
Quarta Outubro 8 12:57:50 PDT 2008


Olá a todos,

Preciso executar certos processos com memória compartilhada, então optei por
usar threads::shared,
o problema é que quando a execução termina a memória não é liberada,
procurei na documentação
e não achei nada, desculpem se for algo muito banal, mas sou novato tanto em
programação quanto
em Perl.

Não estou postando meu código, estou postando um teste que fiz e tive o
mesmo problema,
o script de teste começa ocupando 0.1% da memória da minha máquina, depois
vai aumentando
até chegar em 1.0%, só que mesmo depois das threads serem executadas o uso
de memória
continua em 1.0%.

#!/usr/bin/perl
use strict;
use warnings;

use threads;
use threads::shared;

my %value = ();
share(%value);

for(my $i = 0; $i < 100; $i++) {
    # Isso é para os processos serem criados aos poucos
    # e eu poder monitorar pelo utilitário top o aumento
    # do uso da memória

    my $thr = threads->create('teste', '');
    $thr->detach();
}

# Coloquei isso para o script continuar rodando e
# eu poder monitorar pelo utilitário top
# e ver se a memória seria liberada
sleep 1000;

sub teste {
    $value{EXEMPLO} = 'Valor qualquer';
    sleep 20;
    print threads->self->tid(), "\n";
    return;
}


Grato,

-- 
Geovanny Junio
geovannyjs em gmail.com :: 00 55 31 9291-8966
@ILike = qw(Racer Music Movies);
"Um homem conta suas histórias tantas vezes que elas se misturam a ele, e
ele sobrevive a elas, e é desse jeito que ele se torna imortal." Big Fish
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20081008/75d71354/attachment.html>


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