17

OSGiのメモリ管理について理論的な質問があります。

OSGiコンテナ(たとえばFelix)があるとしましょう。そして、メモリリークのあるバンドルを作成したとしましょう。

そして、ここに私が持っているいくつかの質問があります:

  1. この「障害」バンドルのメモリ消費を制限する方法はありますか?たとえば、メモリ制限を超えた場合– OSGiコンテナからメールが送信されたり、アンインストールされたりしますか?
  2. バンドル「A」のメモリ消費はバンドル「B」にどのように影響しますか。たとえば、「A」によってメモリ不足エラーが発生した場合、OSGiコンテナ全体が爆発しますか?
4

2 に答える 2

18

完全なOSGiフレームワークは、単一の仮想マシンで実行されます。各バンドルが異なるクラスローダーによってロードされることだけです。ただし、すべてのバンドルは同じヒープを共有し、1つのバンドルがメモリをリークすると、これはOSGiベースのアプリケーション全体に影響します。

そうです、OutOfMemoryErrorが1つのバンドルによって引き起こされた場合、コンテナ全体が「爆破」されます。

(ところで:誰かがバンドルをコンテナにドロップするとSystem.exit()、警告なしにコンテナ全体が停止します-バンドルは、一部の「jvm内の仮想マシン」のような分離されたコンテキストに存在しません)

于 2011-05-16T14:04:59.330 に答える
4

この調査も確認することをお勧めします:http://vmkit.llvm.org/publications/osgi_dsn.html

于 2011-07-22T13:37:25.893 に答える