五种JVM性能优化技巧

16-09-05 banq
         

优化Java代码需要理解Java中不同元素是如何交互的,以及与操作系统是如何交互的,下面五个技巧帮助你分析和优化代码。

性能优化依赖于许多情况,比如垃圾回收,虚拟机和底层操作系统设置。有许多工具帮助开发者分析和优化,这里是Java源码分析和优化工具。

下面是五个技巧建议:

1.微调垃圾回收机制

挖掘到你的应用真正性能是很难的,因为垃圾回收机制很复杂,如果你要优化应用,需要首先处理垃圾回收,通常目标是改变GC设置,同时执行调校。

一旦你比较满意调校结果,就要停止调校,不要再试验其他优化方式,确保平均处理时间符合你的大概要求。

另外你需要理解在运行期间的性能影响点,单次数据库处理如果有减慢需要值得注意。

2.寻找正确的GC算法

GC每个不同算法应对不同需求,GC四种算法是:序列收集器、并行/吞吐量收集器、CMS收集器和G1收集器。这里是更多学习垃圾回收机制的资源,也讨论了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).远离递归循环,递归循环是资源密集型。

Start learning how to analyze and optimize your co

[该贴被banq于2016-09-05 19:13修改过]