Java性能调优技巧方法送给你!

158人已阅读 2018-05-17 13:34:20
导读 从事java程序的人群,都希望自己的项目都可以一直运作下去,这就少不了一个重要的环节,性能优化,做到*优化可不是一件容易的事情,今天小编为大家整理了一些关于JAVA性能优化的资料,希望对大家有所帮助
热门课程 游戏美术设计 IT程序开发

新闻详情

2018-05-17 13:34:20

Java性能调优技巧方法送给你

从事java程序的人群,都希望自己的项目都可以一直运作下去,这就少不了一个重要的环节,性能优化,做到*优化可不是一件容易的事情,今天小编为大家整理了一些关于JAVA性能优化的资料,希望对大家有所帮助!
在明确必要之前别急着优化
  这可能是最重要的性能优化技巧之一。你应该遵循常见的*实践做法并在案例中高效地应用它。但是这并不意味在证明必要之前,你应该更换任何标准库或构建复杂的优化。
  多数情况下,过早地优化会占用大量的时间,而且会使代码变得难以理解和阅读。更糟糕的是,这些优化通常并没带来任何好处,因为你花了大量的时间在优化应用中的非关键部分。
  那么,要怎么证明东西需要优化呢?
  首先,你需要定义你的代码速度得多快。例如,为所有API调用指定*响应时间,或者指定在特定时间范围内要导入的记录数量。在做完这些后,你需要确定你应用中哪些部分太慢需要改进。当完成这些后,你就可以来看看第二个技巧提示。
使用分析器找到真正的瓶颈
  在完成*部分的优化建议以鉴别出你应用中需要提升的部分后,要从哪里入手呢?
  你可以有两种途径来解决这个问题:
  查看你的代码,从看起来可疑的或者你觉得可能会导致出现问题的地方入手
  或者使用分析器获取代码每个部分的行为(执行过程)和性能的详细信息。
  希望我不需要解释为什么应该始终遵循第二种途径/方法的原因。
  很显然,基于分析器的方式可以让你更好地理解代码的性能影响,并允许你去专注于更关键的部分(代码)。即使你曾经使用过分析器,你一定记得你曾经多么惊讶于一下就找到了代码的哪些部分产生了性能问题。我*次的猜测不止一次地导致我走错了方向。
为整个应用程序创建一个性能测试套件
  这是另一个通用的可以帮助你避免在将性能改进部署到产品中之后经常会发生的许多意外问题的技巧。你应该总是定义一个性能测试套件来测试整个应用程序,并在性能改进之前和之后运行它。
  这些额外的测试运行将帮助你识别你的改动所引起的功能和性能上的副作用,并确保不会导致弊大于利的更新。如果你处理的是被应用程序的多个不同部分使用的组件,如数据库或缓存,那这一点尤为重要。
优先关注*瓶颈
  在创建了测试套件并使用分析器分析你的应用程序之后,你可以列出一系列需要解决以提高性能的问题列表。这很好,但这并没有回答你需要从哪里开始的问题。你可以专注于速成方案,或从最重要的问题开始。
  速成方案一开始可能会很有吸引力,因为你可以很快显示*个成果。但有时,可能有必要说服其他团队成员或管理层认为性能分析是值得的。
  一般来说,我建议从顶层开始,首先开始处理最重要的性能问题。这将为你提供*的性能改进,而且你可能仅需要解决这些问题中的一小部分就能满足你的性能要求。
  常见的通用调优技巧到此结束。接下来让我们仔细看看一些特定于Java的技巧。
使用StringBuilder以编程方式连接字符串
  在Java中有很多不同的选项来连接字符串。例如,你可以使用简单的+或+=,以及老的StringBuffer或StringBuilder。
  那么,你应该选择哪种方法呢?
  答案取决于连接字符串的代码。如果你是以编程方式将新内容添加到字符串中,例如在for循环中,则应使用StringBuilder。它很易于使用,并提供比StringBuffer更好的性能。但请记住,与StringBuffer相比,StringBuilder不是线程安全的,可能并不适用于所有情况。
  你只需要实例化一个新的StringBuilder并调用append方法来向String中添加一个新的部分。在你添加完了所有的部分后,你可以调用toString()方法来检索已连接的字符串。
  下面的代码片段展示了一个简单的例子。在每次迭代期间,该循环将i转换为一个String,并将其与空格一起添加到StringBuilder sb中。所以,最后,这段代码在日志文件中写入“This is a test0 1 2 3 4 5 6 7 8 9”。
  StringBuilder sb=new StringBuilder(“This is a test”);for(int i=0;i<10;i++){
  sb.append(i);
  sb.append(”“);
  }
  log.info(sb.toString());
  正如你在我们的公众号Java技术栈代码片段中看到的,我们可以为字符串的*个元素提供到构造函数中。这会创建一个StringBuilder,其中包含了你所提供的字符串以及16个额外字符的容量。当你向StringBuilder中添加更多字符时,你的JVM将动态的增加StringBuilder的大小。
  如果你已经知道字符串将包含多少个字符,则可以将该数字提供给不同的构造方法以实例化具有指定容量的StringBuilder。这进一步提高了效率,因为它不需要动态扩展其容量。
上一篇: 帮你介绍JAVA的几大框架! 下一篇: java程序猿如何成为优秀的架构师?

相关文章

推荐课程

查看全部课程
武汉龙图教育

武汉龙图教育

洪山校区

查看全部校区 进入官方主页