可能导致CPU占用率过高的场景与解决方案

575 阅读1分钟

场景1: 无限while循环

解决方案: 尽量减少无限循环、让循环执行得慢一点(sleep)


场景2: 频繁GC

解决方案: 降低GC频率


场景3: 频繁创建新对象

解决方案: 合理使用单例


场景4: 序列化和反序列化 XStream在反序列化大对象时有严重的性能问题_dogegg250_51CTO博客

解决方案: 选择合理的API实现功能、选择好用的序列化/反序列化类库


场景5: 正则表达式。原因是正则表达式使用了NFA自动机的引擎,这种引擎在进行字符串匹配的时候会发生回溯,可能导致CPU占用率过高。关于NFA的更多细节及解决方案可以参考下面的文章:

正则表达式和 CPU 100%有什么故事?_小菜鸟的博客-CSDN博客


场景6: 频繁的线程上下文切换

解决方案:降低切换的频率,可能需要结合业务进行改造,复杂度较高