Java OSGi内存管理

Java OSGi内存管理,java,osgi,apache-felix,Java,Osgi,Apache Felix,我有一个关于OSGi内存管理的理论问题 假设我们有一些OSGi容器(例如Felix),假设我创建了一些内存泄漏的包 以下是我的一些问题: 有没有办法限制内存 此“故障”的消耗量 捆例如,如果超过 内存限制–OSGi容器将 向我发送电子邮件、卸载或 还有别的吗 内存消耗是如何产生的 束“A”影响束“B”。对于 “A”导致内存不足错误的示例 它会炸毁整个OSGi吗 集装箱 完整的OSGi框架在单个虚拟机中运行。只是每个包都由不同的类加载器加载。但是所有包共享同一堆,如果一个包泄漏内存,这将影响整个基

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

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

以下是我的一些问题:

  • 有没有办法限制内存 此“故障”的消耗量 捆例如,如果超过 内存限制–OSGi容器将 向我发送电子邮件、卸载或 还有别的吗
  • 内存消耗是如何产生的 束“A”影响束“B”。对于 “A”导致内存不足错误的示例 它会炸毁整个OSGi吗 集装箱

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

    因此,是的,如果一个包导致OutOfMemoryError,那么整个容器都会“爆炸”


    (顺便说一句:如果有人将一个bundle放入您的容器中,该容器执行
    System.exit()
    ,那么整个容器也会在没有警告的情况下停止-bundle不会像某些“jvm中的虚拟机”那样存在于孤立的上下文中)

    您可能还想检查一下这项研究:

    +1:不过,OSGi框架的权限层应该可以保护您免受对
    System.exit()
    等方法的滥用调用。谢谢Andreas,这回答了我的问题。Andreas,您还没有回答问题1-您知道是否有办法限制捆绑包的内存吗?我怀疑这是可能的。我不知道有任何机制可以计算堆上对象集合的内存占用。