2011-05-16 28 views
16

OSGi bellek yönetimi hakkında teorik bir sorum var.OSGi bellek yönetimi

Bazı OSGi konteynerine (örneğin, Felix) sahip olduğumuza ve bellek sızıntısı olan bir paket oluşturduğumu varsayalım.

  1. bu “başarısızlık” paket için hafıza tüketimini sınırlamak için herhangi bir yolu var mı:

    Ve burada var bazı sorular nelerdir? Örneğin, bellek sınırını aşarsa - OSGi konteyneri bana bir e-posta gönderir, başka bir şey yollayabilir mi?

  2. “A” paketindeki bellek tüketimi “B” demetini nasıl etkiler. için “A” bellek yetersizliği neden oluyorsa tüm OSGi kabını havaya uçurur mu?

cevap

18

Tüm OSGi çerçevesi tek bir sanal makinede çalışır. Sadece her paket farklı bir sınıf yükleyici tarafından yüklenir. Ancak tüm paketler aynı yığını paylaşır ve bir paket bellek sızdırıyorsa, bu tüm OSGi tabanlı uygulamayı etkiler.

Evet, bir OutOfMemoryError bir paket tarafından neden oluyorsa, tüm kap "şişirilir".

(BTW: Birisi bir System.exit() yapar senin kabın içine bir paket düşerse, o zaman yine bütün kap uyarı olmadan durdurulur - desteler bazı "Bir jvm içindeki sanal makinelerde" gibi izole bağlamlarda yaşamayan)

+0

+1: OSGi çerçevesinin izin katmanı, sizi 'System.exit()' gibi yöntemlere yönelik küfürlü çağrılara karşı korumalıdır. –

+0

Teşekkürler Andreas, bu sorumu cevaplıyor. – altanis

+0

Andreas, soruları cevaplamadınız 1 - Bir paketin belleğini sınırlamanın bir yolu var mı? –

3

Ayrıca şu araştırmayı da incelemek isteyebilirsiniz: