2011-05-16 5 views
16

OSGi 메모리 관리에 관한 이론적 인 질문이 있습니다.OSGi 메모리 관리

예를 들어 OSGi 컨테이너 (예 : Felix)가 있고 메모리 누수가있는 번들을 만든다고 가정 해 봅시다.

  1. 이 "실패" 번들 메모리 소비를 제한 할 수있는 방법이 있나요 :

    그리고 여기에 내가 가진 몇 가지 질문입니까? 예를 들어, 메모리 제한을 초과하는 경우 - OSGi 컨테이너 은 나에게 이메일을 보내거나 제거 하시겠습니까 아니면 다른 것을 원하십니까?

  2. 번들 "A"의 메모리 소비는 번들 "B"에 어떤 영향을 줍니까? 의 경우 "A"로 인해 메모리 부족 오류 이 발생하면 전체 OSGi 컨테이너가 파열됩니까?

답변

18

완전한 OSGi 프레임 워크는 단일 가상 시스템에서 실행됩니다. 각 번들은 다른 클래스 로더에 의해로드됩니다. 그러나 모든 번들은 동일한 힙을 공유하며 하나의 번들이 메모리를 누설하는 경우 이는 전체 OSGi 기반 애플리케이션에 영향을 미칩니다.

그렇습니다. OutOfMemoryError가 한 묶음으로 인해 발생하면 전체 컨테이너가 "날아갑니다".

은 (BTW : 누군가가 System.exit()을 수행 컨테이너에 번들을 삭제하면, 다시 전체 컨테이너는 경고없이 정지 - 번들 일부 "는 JVM 내부 가상 머신"과 같은 고립 된 상황에 거주하지 않는)

+0

+1 : 그러나 OSGi 프레임 워크의 권한 계층은 'System.exit()'와 같은 메소드에 대한 불법적 인 호출로부터 당신을 보호해야합니다. –

+0

감사합니다 안드레아스, 내 질문에 대한 답변. – altanis

+0

Andreas, 질문에 답변하지 못했습니다. 1 - 번들의 메모리를 제한하는 방법이 있는지 알고 있습니까? –