stringtranslate.com

Problema de oyente inactivo

En programación informática , el problema del oyente caducado es una fuente común de pérdidas de memoria para los lenguajes de programación orientados a objetos , y una de las más comunes para los lenguajes de recolección de basura . [1]

Se origina en el patrón de observador , donde los observadores (u oyentes) se registran con un sujeto (o publicador) para recibir eventos . En la implementación básica, esto requiere tanto el registro explícito como la anulación explícita del registro, como en el patrón de disposición , porque el sujeto tiene fuertes referencias a los observadores, manteniéndolos activos. La fuga ocurre cuando un observador no se da de baja del sujeto cuando ya no necesita escuchar. En consecuencia, el sujeto aún tiene una referencia al observador que evita que sea recolectado como basura, incluidos todos los demás objetos a los que hace referencia, mientras el sujeto esté activo, lo que podría ser hasta el final de la aplicación.

Esto no solo provoca una pérdida de memoria, sino también una degradación del rendimiento, ya que un observador "desinteresado" recibe y actúa en función de eventos no deseados. Esto se puede evitar si el sujeto mantiene referencias débiles a los observadores, lo que permite que se recolecten los elementos no utilizados de forma normal sin necesidad de anular su registro.

Referencias

  1. ^ Los merodeadores de la memoria en Java, Ethan Henry y Ed Lycklama