需要有关 OSGi 内存消耗的经验
Experience about OSGi memory consumption needed
我们有一个 运行 带有 OSGi 和 1 GB RAM 的应用程序。它 运行 在某种嵌入式设备上运行,因此限制为 1 GB 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% 的可用 RAM 是否“正常”。有没有经验 OSGi >>通常<<消耗了多少 RAM?这 30% 是否还包括我们应用程序对象使用的 RAM,或者这纯粹是 Felix 消耗的 RAM?
建立内存所有者总是很棘手,而且大多不直观,而且我发现它通常没有那么有用。我不确定你如何衡量内存布局,但由于 Felix 掌握了根,这可能会严重扭曲分配的数量。
根据我的经验,当您遇到内存不足错误时,就会发生一些泄漏。所以我倾向于关注相同类型的初始启动后增长的内存是什么。尤其是今天使用 lambdas,很容易创建禁止垃圾回收的引用。
如果 Java VM 有 1Gb,那么我看不出 OSGi 如何可见? OSGi 所需的内存量非常小,启动后不应增加。此外,您与 Karaf 有问题这一事实似乎暗示这里有些可疑的事情。初始启动后,除非您以创造性的方式使用它,否则 OSGi 应该不会妨碍您。
我假设您已经设置了 VM 的不同调整参数?
嗯,我记得 运行 12Mb 路由器中的 OSGi ...
我们有一个 运行 带有 OSGi 和 1 GB RAM 的应用程序。它 运行 在某种嵌入式设备上运行,因此限制为 1 GB 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% 的可用 RAM 是否“正常”。有没有经验 OSGi >>通常<<消耗了多少 RAM?这 30% 是否还包括我们应用程序对象使用的 RAM,或者这纯粹是 Felix 消耗的 RAM?
建立内存所有者总是很棘手,而且大多不直观,而且我发现它通常没有那么有用。我不确定你如何衡量内存布局,但由于 Felix 掌握了根,这可能会严重扭曲分配的数量。
根据我的经验,当您遇到内存不足错误时,就会发生一些泄漏。所以我倾向于关注相同类型的初始启动后增长的内存是什么。尤其是今天使用 lambdas,很容易创建禁止垃圾回收的引用。
如果 Java VM 有 1Gb,那么我看不出 OSGi 如何可见? OSGi 所需的内存量非常小,启动后不应增加。此外,您与 Karaf 有问题这一事实似乎暗示这里有些可疑的事情。初始启动后,除非您以创造性的方式使用它,否则 OSGi 应该不会妨碍您。
我假设您已经设置了 VM 的不同调整参数?
嗯,我记得 运行 12Mb 路由器中的 OSGi ...