[Cascavel-pm] Garbage Collection

Marco A P D´Andrade mda em embratel.net.br
Segunda Julho 12 08:53:11 CDT 2004


Thiago,

Não é exatamente sua solicitação, mas acredito que possa ajudar.

A algumas semanas estava tendo um crescimento exponencial no tempo de 
requisição via webservices, e ao depurar o codigo percebi que estava 
replicando os dados enviados. Pesquisei no google e encontrei uma 
referencia ao livro Advanced Perl Programming, que mostrava o código 
dumpvar, que tem por objetivo listar todas as variáveis criadas dentro 
de um namespace.

Uma alternativa mais simples, caso não tenha utilizado, mas que uso em 
conjunto é o Data::Dumper.

PS: Claro que já não é o codigo original.

package DUMPVAR;

sub dumpvar {
 local *DD;
 my ($packageName) = @_;
 local (*alias);             # a local typeglob
  # We want to get access to the stash corresponding to the package
  # name
  *stash = *{"${packageName}::"};  # Now %stash is the symbol table
  $, = " ";                        # Output separator for print

  # Iterate through the symbol table, which contains glob values
  # indexed by symbol names.
  open(DD, "> $0.dump");

  while (($varName, $globValue) = each %stash) {
      print "$varName ============================= \n";
      *alias = $globValue;
      if (defined ($alias)) {
          print DD "\t \$$varName $alias \n";
      }
      if (defined (@alias)) {
          print DD "\t \@$varName @alias \n";
      }
      if (defined (%alias)) {
          print DD "\t \%$varName ",%alias," \n";
      }
  }
  close(DD);
}


Thiago Corrêa César wrote:

>Eu postei muito poucas vezes para a lista, mas agora
>que estou menos apertado devo ajudar mais :^)
>Li a respeito da garbage collection no perlobj e as
>outras fontes que eu achei acabavam repetindo o texto
>do perlobj. Eu queria de alguma forma saber se as
>referências estão sendo limpadas mesmo, pois meu
>esquema de limpeza de cache nao está funcionando legal
>e queria debugá-lo, para isso precisaria saber se uma
>referencia está sendo usada e dentro de qual outra
>referencia, queria a partir do endereço de uma
>referencia (a string 'HASH=FFFFFF') dar um dump em
>seus pais.
>Deu uma buscada no CPAN e não achei em nenhum módulo
>sobre isso, se alguem tiver uma referência legal
>explicando algo mais sobre a garbage collection me
>mande por favor.
>
>Espero ter sido claro (pootz como isso eh difícil :^)
>).
>
>Grande abraço as Mongers
>
>----------
>Thiago Correa César
>ICQ: #87186157
>Linux User: #242611
>
>
>	
>	
>		
>_______________________________________________________
>Yahoo! Mail agora com 100MB, anti-spam e antivírus grátis!
>http://br.info.mail.yahoo.com/
>_______________________________________________
>Cascavel-pm mailing list
>Cascavel-pm em mail.pm.org
>http://cascavel.pm.org/mailman/listinfo/cascavel-pm
>
>
>






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