OSGi 内存管理

2022-09-03 01:36:40

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

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

以下是我的一些问题:

  1. 有没有办法限制此“失败”捆绑包的内存消耗?例如,如果它超过内存限制 - OSGi容器会给我发送电子邮件,卸载它还是其他什么?
  2. 捆绑包“A”中的内存消耗如何影响捆绑包“B”。例如,如果“A”导致内存不足错误,它会炸毁整个OSGi容器吗?

答案 1

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

所以,是的,如果一个OutOfMemoryError是由一个捆绑引起的,那么整个容器就会被“炸毁”。

(顺便说一句:如果有人将捆绑包放入您的容器中,然后整个容器再次停止而不会发出警告 - 捆绑包不会像某些“jvm中的虚拟机”那样存在于孤立的上下文中)System.exit()


答案 2

您可能还想查看此研究:http://vmkit.llvm.org/publications/osgi_dsn.html


推荐