OSGi内存管理

发布于 2024-11-07 04:56:23 字数 254 浏览 4 评论 0原文

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

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

这是我有一些问题:

  1. 有什么方法可以限制内存 这次“失败”的消费 捆?例如,如果超过 内存限制 – OSGi 容器会 给我发送电子邮件,将其卸载或 还有什么?
  2. 内存消耗如何 捆绑“A”影响捆绑“B”。为了 例如,如果“A”导致内存不足错误 它会毁掉整个 OSGi 容器?

I have theoretical question about OSGi memory management.

Let’s say we have some OSGi container (Felix for instance), and let’s suppose I created some bundle with memory leak.

And here are some questions that I have:

  1. Is there any way to limit memory
    consumption for this “failure”
    bundle? For example if it exceeds
    memory limit – OSGi container would
    send me an email, uninstall it or
    something else?
  2. How does memory consumption in
    bundle “A” affect bundle “B”. For
    example if “A” causes out of memory error
    would it blow up whole OSGi
    container?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

今天小雨转甜 2024-11-14 04:56:23

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

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

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

The complete OSGi framework runs in a single virtual machine. Only that each bundle is loaded by a different classloader. But all bundles share the same heap and if one bundle leaks memory, this affects the whole OSGi based application.

So yes, if an OutOfMemoryError is caused by one bundle, the whole container is "blown up".

(BTW: if someone drops a bundle into your container that does a System.exit(), then again the whole container is stopped without a warning - bundles do not live in isolated contexts like some "virtual machines inside a jvm")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文