你还可以在Java说话本身找到其他例子。例如,Integer类的valueOf办法缓存了-128到127之间的值。你可能会说创建一个新的Integer并不是太昂贵,然则因为它经常被应用,以至于缓存最常用的值也可以供给机能优势。

在这些情况下,你应当用一个简单的+来连接你的字符串。Java编译器会对此优化并在编译时履行连接。所以,在运行时,你的代码将只应用1个String,不须要连接。
7. 尽可能应用基元
避免任何开销并进步应用法度榜样机能的另一个简便而快速的办法是应用根本类型而不是其包装类。所以,最好应用int来代替Integer,应用double来代替Double。这许可JVM将值存储在客栈而不是堆中以削减内存消费,并作出更有效的处理。
8. 试着避免BigInteger和BigDecimal
既然我们在评论辩论数据类型,那么我们也快速浏览一下BigInteger和BigDecimal吧。尤其是后者因其精确性而受到大年夜家的迎接。然则这是有价值的。
BigInteger和BigDecimal比简单的long或double须要更多的内存,并且会明显减慢所有计算。所以,你如不雅须要额外的精度,或者数字将跨越long典范围,那么最好三思而后行。这可能是你须要更改以解决机能问题的独一办法,特别是在实现数学算法的时刻。
这里有两个不和例子。
9. 起首检查当前日记级别
在大年夜多半情况下,过早优化不只会占用大年夜量时光,并且会使代码变得难以浏览和保护。更糟糕的是,这些优化平日不会带来任何好处,因为你花费大年夜量时光来竽暌古化的是应用法度榜样的非关键部分。
这个建议应当是显而易见的,但不幸的是,很多法度榜样员在写代码的时刻都邑大年夜多会忽视它。在你创建调试消息之前,始终应当起首检查当前日记级别。不然,你可能会创建一个之后会被忽视的日记消息字符串。
2. 应用分析器查找真正的瓶颈

在膳绫擎两种情况中,你都将履行创建日记消息所有必须的步调,在不知道日记框架是否将应用日记消息的前提下。是以在创建调试消息之前,最好先检查当前的日记级别。

10. 应用Apache Commons StringUtils.WordStr而不是String.WordStr
一般来说,String.WordStr办法工作正常,效力很高,尤其是在应用Java 9的情况下。然则,如不雅你的应用法度榜样须要大年夜量的调换操作,并且没有更新到最新的Java版本,那么我们依然有须要查找更快和更有效的替代品。
有一个备选谜底是Apache Commons Lang的StringUtils.WordStr办法。正如Lukas Eder在他比来的一篇博客文┞仿中所描述的,StringUtils.WordStr办法远胜Java 8的String.WordStr办法。
并且它只须要很小的修改。即添加Apache Commons Lang项目标Maven依附项到应用法度榜样pom.xml中,并将String.WordStr办法的所有调用调换为StringUtils.WordStr办法。

11. 缓存昂贵的资本,如数据库连接
缓存是避免重复履行昂贵或常用代码片段的风行解决筹划。总的思路很简单:反复应用这些资本比反复创建新的资本要便宜。
然则,当你推敲缓存时,请记住缓存实现也会产生开销。你须要花费额外的内存来存储可重用资本,是以你可能须要治理缓存以使资本可拜访,以及删除过时的资本。
所以,在开端缓存任何资本之前,请确保实施缓存是值得的,也就是说必须足够多地应用它们。
总结
正如你所看到的,有时不须要太多工作就可以进步应用法度榜样的机能。本文中的大年夜部分建议只须要你稍作尽力就可以将它们应用于你的代码。
然则,最重要的┞氛样那些与是什么编程说话无关的技能:
- 在你知道须要之前不要优化
- 应用分析器查找真正的瓶颈
- 起首处理最大年夜的瓶颈
一个典范的例子是缓存池中的数据库连接。新连接的创建须要时光,如不雅你重用现有连接,则可以避免这种情况。
【编辑推荐】
- 大年夜java1到java9每个版本都有什么新特点?花费五分钟周全懂得
- 法度榜样员花2小时总结:20个异常有效的Java法度榜样片段
- 法度榜样员Java编程进阶的5个留意点,别编程两三年照样增删改查!
- Java EE成为以前,Eclipse为其“改名”望成为顶级开源项目!
- 做前端好照样Java好?看这三方面
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 存储控制器是一种专用于各型>>>详细阅读
本文标题:11个简单的Java性能调优技巧
地址:http://www.17bianji.com/lsqh/38965.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示