Objet :: Destroyer

Objet :: Destroyer peut faire des objets avec des références circulaires détruire normalement.
Télécharger maintenant

Objet :: Destroyer Classement & Résumé

Publicité

  • Rating:
  • Licence:
  • Perl Artistic License
  • Prix:
  • FREE
  • Nom de l'éditeur:
  • Adam Kennedy and Igor Gariev
  • Site Internet de l'éditeur:
  • http://search.cpan.org/~adamk/

Objet :: Destroyer Mots clés


Objet :: Destroyer La description

Objet :: Destroyer peut faire des objets avec des références circulaires détruire normalement. Objet :: Destroyer peut faire des objets avec des références circulaires Détruire normalement.Synopsis Utilisez l'objet :: Destroyer; ## Utilisez un destroyer autonome pour libérer quelque chose ## quand il tombe hors de la portée du bloc: {My $ Tree = HTML :: TreeBuilder-> New_from_file ("quelquefile.html"); My $ Sentry = Object :: Destructeur-> Nouveau ($ arbre, 'Supprimer'); ## Ici, vous pouvez mourir en toute sécurité, retourner, appeler le dernier bloc ou prochain bloc. ## L'arborescence sera supprimée automatiquement} ## Utilisez-le pour casser des références circulaires {My $ Var; $ var = $ var; My $ Sentry = Object :: Destructeur-> Nouveau (Sub {UNDEF $ VAR}); ## Plus de fuites de mémoire! ## $ var sera libéré lorsque $ Sentry laisse le bloc} ## Destroyer peut être utilisé comme wrapper presque transparent ## qui transmettra normalement des appels de méthode. {My $ Mess = Big :: Cuisse :: Mess -> Nouveau; Imprimer $ Mess-> Bonjour; } Forfait Big :: Crusty :: mess; Sub New {My $ Self = Bénie {}, Shift; $ auto-> peupler; Objet de retour :: Destructeur-> Nouveau ($ moi, 'version'); } Sub Hello {"Hello World!" } Sous-version {... Code réel pour nettoyer la mémoire ...} L'un des plus gros problèmes de travail avec de grands arbres d'objet imbriqués met en uvre une manière pour un nud enfant de voir son parent. Le moyen le plus simple de le faire est d'ajouter une référence à l'enfant de retour à son parent. Il résulte de la référence "circulaire", où un référateur à B se réfère à A. Malheureusement, le collecteur des ordures Perl utilise pendant l'exécution n'est pas capable de Savoir si quelque chose d'autre fait référence à ces références circulaires.In termes pratiques, cela signifie que les arbres d'objet dans une variable lexicalement scopée (par exemple, mon objet $ objet = arbre-> nouveau) ne seront pas nettoyés lorsqu'ils tombent hors de portée, comme variables normales. Il en résulte une fuite de mémoire pour la durée de vie du processus, qui est une mauvaise chose lors de l'utilisation de mod_perl ou d'autres processus qui vivent pendant une longue période.Object :: Destroyer permet la création de poignées "Détruire". La poignée est "attachée" à la relation circulaire, mais n'est pas une partie de celui-ci. Lorsque la poignée destroyers tombe hors de portée, elle sera nettoyée correctement et tout en étant nettoyée, elle forcera également la structure de données qu'elle est attachée à être détruite. Objet :: Destroyer peut appeler une méthode de version spécifiée sur un objet (ou méthode Détruire par défaut). Alternativement, il peut exécuter un code d'utilisateur arbitraire transmis au constructeur comme référence de code. Exigences: · Perl


Objet :: Destroyer Logiciels associés