优化Java代码需要理解Java中不同元素是如何交互的,以及与操作系统是如何交互的,下面五个技巧帮助你分析和优化代码。
性能优化依赖于许多情况,比如垃圾回收,虚拟机和底层操作系统设置。有许多工具帮助开发者分析和优化。通过一下网址可以了解学习Java源码分析和优化工具
https://dzone.com/articles/java-tools-source-code
下面是五个技巧建议: 1.微调垃圾回收机制
挖掘到你的应用真正性能是很难的,因为垃圾回收机制很复杂,如果你要优化应用,需要首先处理垃圾回收,通常目标是改变GC设置,同时执行调校。 一旦你比较满意调校结果,就要停止调校,不要再试验其他优化方式,确保平均处理时间符合你的大概要求。 另外你需要理解在运行期间的性能影响点,单次数据库处理如果有减慢需要值得注意。 2.寻找正确的GC算法
GC每个不同算法应对不同需求,GC四种算法是:序列收集器、并行/吞吐量收集器、CMS收集器和G1收集器。通过如下网站
https://blog.takipi.com/garbage-collectors-serial-vs-parallel-vs-cms-vs-the-g1-and-whats-new-in-java-8/
可以学习垃圾回收机制的资源,也讨论了Java 8的GC算法
CMS(并行标记并交换GC的简称)是适合大多数Web应用的算法,而并行GC是适合有内建可预测模型的应用。 G1和CMS都是并发应用的理想选择,但是会引起频繁暂停,需要平衡选择。 3. Java heap
Java内存堆是保证内存需要的关键方式,开始是很小的内存堆分配,持续不断增加,大部分优化问题可以通过增加堆大小解决,但是如果有GC过于频繁,增加堆内存大小不一定能够解决。 GC过载过于频繁也会降低吞吐量,使得应用出乎意料地慢,分配堆内存大小能够减轻这个问题,你可以从1GB到8GB选择堆内存大小,老生代和新生代对象也需要考虑,堆大小依赖老生代到新生代的比例。 4.核心应用优化
调整应用架构,关注跟踪你的应用中对象来龙去脉,有助降低内存碎片,堆问题和垃圾回收问题。 5.使用优化函数
几种有助提升性能的函数: (1).使用StringBuilder而不是+操作符 (2).避免使用 iterator(). (3).最大化利用stack栈 (4).避免正则表达式,使用Apache Commons Lang取代 (5).远离递归循环,递归循环是资源密集型。