首页 > 科技 >

如何合理的规划一次jvm性能调优(5)

2019-01-08 14:34:52 网络整理 阅读:107 评论:0

如何才算稳定阶段?

一定得需要产生足够的压力,找到应用程序和生产环境高峰符合状态类似的负荷,在此之后达到峰值之后,保持一个稳定的状态,才算是一个稳定阶段。所以要达到稳定阶段,压力测试是必不可少的,具体如何如何对应用压力测试,本篇不过多说明,后期会有专门介绍的篇幅。

在确定了应用出于稳定阶段的时候,要注意观察应用的GC日志,特别是Full GC 日志。

GC日志指令: -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:

GC日志是收集调优所需信息的最好途径,即便是在生产环境,也可以开启GC日志来定位问题,开启GC日志对性能的影响极小,却可以提供丰富数据。

必须得有FullGC 日志,如果没有的话,可以采用监控工具强制调用一次,或者采用以下命令,亦可以触发

jmap -histo:live pid

在稳定阶段触发了FullGC我们一般会拿到如下信息:

从以上gc日志中,我们大概可以分析到,在发生fullGC之时,整个应用的堆占用以及GC时间,当然了,为了更加精确,应该多收集几次,获取一个平均值。或者是采用耗时最长的一次FullGC来进行估算。

在上图中,fullGC之后,老年代空间占用在93168kb(约93MB),我们以此定为老年代空间的活跃数据。

其他堆空间的分配,基于以下规则来进行。

空间

命令参数

建议扩大倍数

java heap

-Xms和-Xmx

3-4倍FullGC后的老年代空间占用

永久代

-XX:PermSize

-XX:MaxPermSize

1.2-1.5倍FullGc后的永久带空间占用

新生代

-Xmn

1-1.5倍FullGC之后的老年代空间占用

老年代

2-3倍FullGC后的老年代空间占用

基于以上规则和上图中的FullGC信息,我们现在可以规划的该应用堆空间为:

相关文章