【发布时间】:2012-05-26 18:17:24
【问题描述】:
我正在尝试诊断基于 OSGi 构建的 Java 应用程序的性能问题。该平台是在嵌入式 Linux 机器上运行的 ARM5 处理器。 CPU 利用率通常为 100%,内存消耗量很大。
我在公司的嵌入式 O/S 方面,Java 开发人员在企业应用程序开发方面比嵌入式更熟练。虽然我的背景还包括嵌入式 Java,但正是因为这个原因,我才避免使用 OSGi。
我正在寻找唾手可得的成果 - 有哪些常见的设计错误可能会导致 CPU 和内存消耗过多,我可以快速调查这些错误以使 CPU 利用率恢复到更合理的水平。
【问题讨论】:
-
我们需要更多信息;您正在使用哪个 OSGi 实现?菲利克斯?鲢鱼?春分?您正在使用哪种 ARM JVM 实现?热点?爪哇我? IBM J9 ?此外,您的问题可能需要分析,而不是调试。
-
我将不得不向开发人员询问正在使用的 OSGI 实现,但我怀疑这甚至不相关——这似乎是一个独立于所有低级细节的问题。我想我知道一些问题出在哪里——这是一个实时应用程序,我怀疑 Java 代码没有解决被请求和处理的数据的及时性。
-
如果您认为问题与 OSGi 有关,那么使用哪个 OSGi 实现非常相关......但是我倾向于同意 OSGi 不太可能相关。我将从查看较低级别的 Java 问题开始,例如 GC。你能附上一个分析器吗?如果真实设备不支持,那么您可以在台式计算机上运行它并在那里对其进行配置吗?等等……
-
Neil,开发人员确实在 Windows 机器上对其进行了分析,最大的内存消耗是数千个字符串,所有字符串都与 OSGi 包及其名称相关联。那台机器太快了,无法发生 CPU 争用。这是一个 256MB 的 ARM5 机器,并且 MB 字符串之上的 MB 并不完全适合嵌入式 Linux。我可以访问一些更快的(400MHz),但在内存和盒子上仍然很小,并且正在考虑将应用程序放在其中一个上并查看它真正需要多少 CPU,然后进行分析。
标签: java osgi embedded-linux