Objeto :: Destructor

Objeto :: Destructor puede hacer que los objetos con referencias circulares se destruyan normalmente.
Descargar ahora

Objeto :: Destructor Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • Adam Kennedy and Igor Gariev
  • Sitio web del editor:
  • http://search.cpan.org/~adamk/

Objeto :: Destructor Etiquetas


Objeto :: Destructor Descripción

Objeto :: Destructor puede hacer que los objetos con referencias circulares se destruyan normalmente. Objeto :: Destructor puede hacer que los objetos con referencias circulares destruyan normalmente. OBJETO DE USO :: Destructor; ## Use un destructor independiente para liberar algo ## cuando caiga fuera del bloque de alcance: {My $ Tree = HTML :: TreeBuilder-> New_from_File ('somefile.html'); My $ Sentry = Object :: Destructor-> Nuevo ($ árbol, 'Eliminar'); ## Aquí puede morir de forma segura, volver, llamar al Último bloque o el siguiente bloque. ## El árbol se eliminará automáticamente} ## Úselo para romper referencias circulares {My $ Var; $ var = $ var; My $ Sentry = Object :: Destructor-> Nuevo (sub {UNDEF $ $ var}); ## ¡No más fugas de memoria! ## $ var se lanzará cuando $ Sentry deja el bloque} ## Destroyer se puede usar como una envoltura casi transparente ## que pasará por las llamadas de método normalmente. {My $ Mess = Big :: Custy :: Mess-> Nuevo; Imprimir $ Mess-> Hola; } Paquete grande :: Crusty :: Mess; Sub nuevo {My $ Self = Bless {}, Shift; $ auto-> rellenar; Objeto de retorno :: Destructor-> Nuevo ($ yo, 'lanzamiento'); } Sub hola {"Hola mundo!" } Sub Lanzamiento {... Código real para limpiar la memoria ...} Uno de los mayores problemas con el trabajo con los árboles de objetos grandes, anidado, está implementando una forma de que un nodo infantil vea a su padre. La forma más fácil de hacer esto es agregar una referencia al niño de vuelta a su padre. Esto resulta en una referencia "circular", donde se refiere a B se refiere a A. Desafortunadamente, el colector de basura Perl utiliza durante el tiempo de ejecución no es capaz de Saber si otra cosa se refiere o no a estas referencias circulares. En términos prácticos, esto significa que los árboles de objetos en la variable de ámbito léxicamente (por ejemplo, My $ objeto = árbol-> nuevo) no se limpiarán cuando se cautivan de alcance, como Variables normales. Esto se traduce en una pérdida de memoria para la vida útil del proceso, lo cual es algo malo cuando se usa MOD_PERL u otros procesos que viven durante mucho tiempo. Oobject :: Destroyer permite la creación de asas "destruir". El mango está "adjunto" a la relación circular, pero no es parte de ella. Cuando el control de la destrucción cae de alcance, se limpiará correctamente, y mientras se limpió, también forzará la estructura de datos que está adjunta a ser destruida también. Objeto :: Destructor puede llamar a un método de liberación específico en un objeto (o método destruido de forma predeterminada). Alternativamente, puede ejecutar un código de usuario arbitrario pasado al constructor como referencia de código. Requisitos: · Perl


Objeto :: Destructor Software relacionado