OSGI涉及的开销

时间:2012-06-27 09:13:15

标签: osgi overhead

OSGI是今天的流行语。它具有许多优点,如松耦合,可重用性。但我想知道OSGI是否有任何开销,因为我必须在我的项目中使用。它会影响速度或任何其他类型的开销。请帮忙

谢谢

3 个答案:

答案 0 :(得分:4)

没有真正的开销。 OSGi旨在在内存受限的环境中工作,实际上可以提高执行速度,因为搜索每个加载请求的类空间较小。

天真的开发人员总是可以通过做愚蠢的事情搞砸性能,但任何环境都是如此。

答案 1 :(得分:2)

在典型的OSGi环境中,您将拥有捆绑类加载器和OSGi服务,您可能会怀疑它们会影响性能。 bundle classloader只是看到一个较小的类空间,所以它不应该比普通的类加载器慢。在某些情况下,它可能比Neil写的更快。 OSGi服务也不应该影响性能。基本上它们只是一种查找界面的Impl类的方法。所以一旦你解决了Impl,它只是一个没有开销的方法调用。没有序列化,也没有涉及代理。

答案 2 :(得分:2)

使用OSGi产生的最大负面生产影响是由于具有加载不同类加载器的多个版本的类所需的PermGen空间的增加。除非使用JRockit(根据需要从操作系统分配),否则最大PermGen大小在JVM启动时是固定的,如果有一个类加载器泄漏(很容易收集),很难清除,这使得它可能是一个有限的资源。

没有实质性的影响。知道在极端情况下会发生什么可能会有一些认知负担 - 例如,通过不同类加载器加载的“相同类”的实例将导致它们具有不同的类型(instanceof在比较时返回false { {1}}返回true) - 但性能不会受到影响。