java osgi apache-felix

java - Gestión de memoria OSGi



apache-felix (2)

El marco OSGi completo se ejecuta en una sola máquina virtual. Solo que cada paquete es cargado por un cargador de clases diferente. Pero todos los paquetes comparten el mismo montón y si un paquete pierde memoria, esto afecta a toda la aplicación basada en OSGi.

Entonces sí, si un OutOfMemoryError es causado por un paquete, todo el contenedor está "inflado".

(Por cierto: si alguien suelta un paquete en su contenedor que hace un System.exit() , entonces todo el contenedor se detiene sin advertir que los paquetes no viven en contextos aislados como algunas "máquinas virtuales dentro de un jvm")

Tengo una pregunta teórica sobre la gestión de memoria OSGi.

Digamos que tenemos algún contenedor OSGi (Felix, por ejemplo), y supongamos que he creado algún paquete con pérdida de memoria.

Y aquí hay algunas preguntas que tengo:

  1. ¿Hay alguna forma de limitar el consumo de memoria para este paquete de "fallas"? Por ejemplo, si supera el límite de memoria, ¿el contenedor OSGi me enviaría un correo electrónico, lo desinstalaría o algo más?
  2. ¿Cómo afecta el consumo de memoria en el paquete “A” al paquete “B”? Por ejemplo, si "A" causa un error de memoria, ¿explotaría todo el contenedor OSGi?