JAVA性能调优点滴

来源:互联网 发布:放空自己知乎 编辑:程序博客网 时间:2024/05/24 02:32

原理

java性能调优主要分为二个部分:java虚拟机jvm调优和java程序本身调优,从一个应用来说二者是密不可分。一般的调优和架构选择会有如下步骤:
1、 事前:基准测试,做一个基准的例子程序做压力,调整JVM的配置参数,这一步要选择的这个例子程序要和现网最终实现的有一定的吻合性验证才有意义
2、开发完成后:做压力测试,根据应用场景反复做,以基备的测试结果做参考,全面提升并发量
3、线上测试:针对有一些问题可能在测试环境中无法浮现的现象,可以通过线上打开JVM的相关参数,输出对应的信息进行分析
总结
1、任何测试都要有指标,基于这个指标和约束条件来进行测试。
2、通过jvm虚拟机的基准测试来对整体的业务进行测试,一般情况下和数据相关的业务流程影响较大

观察工具

传统的观察测试环境工具包括Jconsole,Jprofiler等工具,这类工具是可以直接直接进行详细的观察,图形界面。
线下观察工具,一般的方法是使用参数输出对应的gc的信息,使用gcviwer进行查看分析,或者使用tprofiler进行查看
JAVA命令行观察工具:jstat,jmap,heap
堆分析工具:jmat

一般调优的思想

指标:确定延迟/响应性系统要求:
A.应用程序可接受的平均停滞时间。
B.应用程序可接受的Minor GC(会导致延迟)频率。
C.应用程序可接受的最大停顿时间。
D.应用程序可接受的最大停顿发生频率。

评估:评估垃圾收集对延迟/响应性影响因素:
A.测量Minor GC的持续时间。
B.统计Minor GC的频率。
C.测量Full GC的最差(最长)持续时间。
D.统计最差情况下,Full GC的频率。

新生代到老生代的比率
对象提升率是对象从新生代复制到老年代对象的比率,计算方法如下:
首先,观察Full GC之前的连续多个Minor GC中老年代空间占用。
其次,计算相邻Minor GC老年代空间占用。
第三,计算Minor GC对象平均提升速度=相邻Minor GC老年代空间占用/Minor GC间隔时间。
第四,估算Full GC频率=老年代剩余空间/Minor GC对象平均提升速度。

参考文档

http://blog.csdn.net/chjttony/article/details/45896407
http://blog.csdn.net/ystyaoshengting/article/details/50607332
http://blog.csdn.net/ystyaoshengting/article/details/50600130

1 0