Подтвердить что ты не робот

Управление памятью OSGi

У меня есть теоретический вопрос об управлении памятью OSGi.

Предположим, что у нас есть контейнер OSGi (например, Felix), и предположим, что я создал некоторый пакет с утечкой памяти.

И вот несколько вопросов, которые у меня есть:

  • Есть ли способ ограничить память потребление для этого "отказа" расслоение? Например, если он превышает ограничение памяти - контейнер OSGi отправьте мне электронное письмо, удалите его или что-то еще?
  • Как потребление памяти в пучок "А" влияет на пучок "В". Для например, если "A" вызывает ошибку в памяти это взорвало бы всю OSGi контейнер?
4b9b3361

Ответ 1

Полная инфраструктура OSGi работает в одной виртуальной машине. Только то, что каждый комплект загружается другим загрузчиком классов. Но все связки имеют одну и ту же кучу, и если одна пучка утечки памяти, это влияет на все приложение на основе OSGi.

Итак, если OutOfMemoryError вызван одним пакетом, весь контейнер "взорван".

(Кстати: если кто-то сбрасывает пакет в ваш контейнер, который делает System.exit(), то снова весь контейнер останавливается без предупреждения - пакеты не живут в изолированных контекстах, как некоторые "виртуальные машины внутри jvm" )