Objeto :: Destruidor.

Objeto :: O Destruidor pode fazer objetos com referências circulares destruir normalmente.
Baixe Agora

Objeto :: Destruidor. Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • Adam Kennedy and Igor Gariev
  • Site do editor:
  • http://search.cpan.org/~adamk/

Objeto :: Destruidor. Tag


Objeto :: Destruidor. Descrição

Objeto :: O Destruidor pode fazer objetos com referências circulares destruir normalmente. Objeto :: Destruidor pode fazer objetos com referências circulares Destruir normalmente.Synopsis use objeto :: destruidor; ## Use um destroyer autônomo para liberar algo ## quando fica fora do bloco de escopo: {my $ tree = html :: treebuilder-> new_from_file ('Somefile.html'); Meu $ Sentry = Object :: Destroyer-> Novo ($ Árvore, 'Excluir'); ## Aqui você pode morrer com segurança, retornar, chamar o último bloco ou próximo bloco. ## A árvore será excluída automaticamente} ## Use-a para quebrar referências circulares {my $ var; $ var = $ var; Meu $ Sentry = Object :: Destruidor-> Novo (sub {Undef $ Var}); ## Não há mais vazamentos de memória! ## $ var será lançado quando $ sentinela deixar o bloco} ## Destroyer pode ser usado como um wrapper quase transparente ## que passará em chamadas de método normalmente. {My $ bag = Big :: Custety :: Mess-> Novo; Imprimir $ Mess-> Olá; } pacote grande :: Crusty :: bagunça; sub new {my $ self = abençoe {}, mudança; $ auto-> povoar; Objeto de retorno :: Destruidor-> Novo ($ self, 'lançamento'); } Sub Hello {"Olá mundo!" } SUB RELEASE {... Código real para limpar a memória ...} Um dos maiores problemas com o trabalho com grandes, árvores de objetos aninhados está implementando uma maneira de um nó filho para ver seu pai. A maneira mais fácil de fazer isso é adicionar uma referência à criança de volta ao pai. Isso resulta em uma referência "circular", onde se refere a B refere-se a A. Infelizmente, o Perl do coletor de lixo usa durante o tempo de execução não é capaz de Sabendo se outra coisa está se referindo a essas referências circulares. Em termos práticos, isso significa que os objetos de árvores em variável lexicalmente escopo (por exemplo, meu objeto $) = tree-> novo) não será limpo quando eles caem fora do escopo, como variáveis normais. Isso resulta em um vazamento de memória para a vida útil do processo, que é uma coisa ruim ao usar mod_perl ou outros processos que vivem por um longo tempo.Object :: Destroyer permite a criação de alças "destruir". A alça é "anexada" ao relacionamento circular, mas não faz parte disso. Quando a alça de destruição cai fora do escopo, ela será limpa corretamente e, ao ser limpo, também forçará a estrutura de dados que ela também está sendo destruída. Objeto :: O Destruidor pode chamar um método de liberação especificado em um objeto (ou método destruir por padrão). Como alternativa, ele pode executar um código de usuário arbitrário passado para o construtor como referência de código. Requisitos: · Perl.


Objeto :: Destruidor. Software Relacionado