Memory leaks 需要OSGi内存消耗方面的经验

Memory leaks 需要OSGi内存消耗方面的经验,memory-leaks,out-of-memory,osgi,Memory Leaks,Out Of Memory,Osgi,我们有一个应用程序,它使用OSGi运行,内存为1GB。它运行在某种嵌入式设备上,因此限制为1GB RAM。我们在没有Karaf的情况下使用Felix,因为Karaf使应用程序陷入了太多的困境 现在的问题是,我们不断地遇到OutOfMemory错误。堆转储分析显示以下图片: org.apache.felix:30%(其中org.apache.felix.framework消耗22%) org.hsqldb:22% io.vertx:24% io.netty:15% 我们自己的申请套餐:0.35%

我们有一个应用程序,它使用OSGi运行,内存为1GB。它运行在某种嵌入式设备上,因此限制为1GB RAM。我们在没有Karaf的情况下使用Felix,因为Karaf使应用程序陷入了太多的困境

现在的问题是,我们不断地遇到OutOfMemory错误。堆转储分析显示以下图片:

  • org.apache.felix:30%(其中org.apache.felix.framework消耗22%)
  • org.hsqldb:22%
  • io.vertx:24%
  • io.netty:15%
  • 我们自己的申请套餐:0.35%

我现在的问题是,OSGi aka Felix为应用程序消耗30%的内存是否“正常”。有没有经验过多少内存>>通常建立内存所有者总是很棘手的,而且大多是非直觉的,我发现它通常没有那么有用。我不知道你是如何衡量内存布局的,但由于Felix掌握着根,这可能会严重扭曲分配的数量

根据我的经验,当你出现内存不足的错误时,就会发生一些泄漏。所以我倾向于关注初始启动后相同类型的内存增长情况。特别是现在的lambdas,创建禁止垃圾收集的引用非常容易

如果Java虚拟机有1Gb,那么我看不出OSGi是如何可见的?OSGi所需的内存量非常小,启动后不会增加。另外,你和卡拉夫之间有问题的事实似乎暗示着这里有可疑的事情发生。在初始启动之后,OSGi应该不会妨碍您,除非您以创造性的方式使用它

我假设您已经设置了VM的不同调优参数


啊,我记得在12Mb路由器上运行OSGi…

建立内存所有者总是很棘手,而且大多是非直觉的,我发现它通常没有那么有用。我不知道你是如何衡量内存布局的,但由于Felix掌握着根,这可能会严重扭曲分配的数量

根据我的经验,当你出现内存不足的错误时,就会发生一些泄漏。所以我倾向于关注初始启动后相同类型的内存增长情况。特别是现在的lambdas,创建禁止垃圾收集的引用非常容易

如果Java虚拟机有1Gb,那么我看不出OSGi是如何可见的?OSGi所需的内存量非常小,启动后不会增加。另外,你和卡拉夫之间有问题的事实似乎暗示着这里有可疑的事情发生。在初始启动之后,OSGi应该不会妨碍您,除非您以创造性的方式使用它

我假设您已经设置了VM的不同调优参数


啊,我记得在12Mb路由器上运行OSGi…

谢谢,彼得。又一个伟大的答案救了我一天:“啊,我记得在12Mb路由器上运行OSGi……”。对不起,打扰了。最初编写应用程序的开发人员是OSGi专家。我们两个维护它的人知道没有,我们需要问一下……请不要犹豫,通过电子邮件与我联系。你会惊讶几天的咨询能带来多大的变化:-)谢谢,彼得。又一个伟大的答案救了我一天:“啊,我记得在12Mb路由器上运行OSGi……”。对不起,打扰了。最初编写应用程序的开发人员是OSGi专家。我们两个维护它的人知道没有,我们需要问一下……请不要犹豫,通过电子邮件与我联系。你会惊讶于几天的咨询能带来多大的变化:-)