首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OSGi性能调试

OSGi性能调试
EN

Stack Overflow用户
提问于 2012-05-19 20:12:39
回答 3查看 821关注 0票数 2

我正在尝试诊断一个构建在OSGi之上的Java应用程序的性能问题。该平台是一个运行在嵌入式Linux机器上的ARM5处理器。CPU使用率经常是100%,并且内存消耗很高。

我在公司的嵌入式操作系统方面,Java开发人员在企业应用程序开发方面比嵌入式应用程序开发更熟练。虽然我的背景也包括嵌入式Java,但正是由于这个原因,我一直避免使用OSGi。

我正在寻找容易获得的结果--哪些常见的设计错误可能会导致过多的CPU和内存消耗,我可以快速调查这些错误,以使CPU利用率恢复到更合理的水平。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-25 18:30:04

这里有一些常见的设计陷阱,希望这能有所帮助:

  • 创建线程可能是非常“昂贵”的。例如,你有不断创建新线程的消息吗?使用线程池。
  • 同样适用于对象(例如,消息、测量),特别是在只有一个字段发生变化的重型包装器中。使用对象池-它有很大的帮助!
  • 在使用字符串时要非常小心,尤其是连接。在字符串上调用简单的操作(替换、追加、复制)经常涉及到许多临时对象的使用,这对内存和垃圾回收都有负面影响。当在经常执行的代码中修改字符串时(例如,日志帮助器类的通用方法,负责编写通过协议发送的消息的方法,等等)然后,优化将无效方法替换为不使用临时对象的实现,从而显着提高性能。

代码语言:javascript
运行
复制
- Use `StringBuffer`
- Use own String parsing via `String.indexOf(int)` instead of `StringTokenizer` whenever possible
- First char comparison via `string.charAt(0)` is faster than `String.startsWith(str)`
- Use `String`’s equals method instead of `equalsIgnoreCase` whenever possible

  • 调整日志级别,使其在正常工作期间不包括调试消息。所有这些调试消息的简单创建可能会显著降低系统速度。同时输出到控制台(即使您看不到)通常会减慢系统速度-始终记录到OSGi日志服务。
票数 3
EN

Stack Overflow用户

发布于 2012-05-21 18:07:22

您发布的分析显示了许多字符串。因此,您可能会遇到一个旧的Java性能陷阱。

如果您在代码中的某处这样做: myString = myString +“";或类似的在循环中,每次都会创建一个新对象。在这些情况下,使用StringBuilder是有意义的。这只是一个大胆的猜测,但它也打击了我。

票数 2
EN

Stack Overflow用户

发布于 2013-05-20 15:43:45

试试Knopflerfish,他们有一个更专注于嵌入式的开源框架实现。还有一家公司Prosyst,它有一个针对嵌入式的商业OSGi框架。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10665066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档