OSGi内存管理

Seb*_*iec 17 java osgi apache-felix

我有关于OSGi内存管理的理论问题.

假设我们有一些OSGi容器(例如Felix),让我们假设我创建了一些内存泄漏的包.

以下是我的一些问题:

  1. 有没有办法限制这个"失败"捆绑的内存消耗?例如,如果它超出内存限制 - OSGi容器会给我发送电子邮件,卸载它或其他东西?
  2. 捆绑"A"中的内存消耗如何影响捆绑"B".例如,如果"A"导致内存不足错误,它会炸毁整个OSGi容器吗?

And*_*s_D 18

完整的OSGi框架在单个虚拟机中运行.只有每个包由不同的类加载器加载.但是所有bundle共享相同的堆,如果一个bundle泄漏内存,这会影响整个基于OSGi的应用程序.

所以,是的,如果OutOfMemoryError是由一个捆绑引起的,整个容器就会被"炸毁".

(顺便说一句:如果有人将一个捆绑包放入你的容器中System.exit(),那么整个容器会在没有警告的情况下停止 - 捆绑包不会生活在孤立的上下文中,比如某些"jvm中的虚拟机")