JVM性能调优(先占坑,陆续补充)

  • 第一部分:JVM概述

  • java类加载机制和内存分配

关于JVM体系的简单介绍参考以下博文,这里不再赘述。http://blog.hesey.net/2011/04/introduction-to-java-virtual-machine.html

  • 几种垃圾收集器对比

 

  • 垃圾回收算法

 

  • 第二部分:JVM监控

 

  • 第三部分:JVM调优

首先,对jvm调优时需要理解和遵循三项基本原则:

第一,每次Minor GC都尽可能多的收集垃圾对象,我们称之为“Minor GC回收原则”。遵守这一原则可以减少应用程序进行Full GC的频率。因为Full GC持续的时间很长,是导致程序延迟和影响吞吐量的罪魁祸首;

第二,处理吞吐量和延迟问题时,垃圾处理器能使用的内存越大,及java堆内存越大,垃圾收集的效果越好,应用程序越流畅,我们称之为“GC内存最大化原则”;

第三,吞吐量、延迟、内存占用三个属性中任意选择两个进行JVM垃圾收集器调优,我们称之为“GC调优的3选2原则”。

GC日志是收集所需调优信息的最好途径。因此我们进行设置将JVM的垃圾回收信息输出:

-XX:+PrintGCTimeStamps  -XX:+PrintGCDetail   -xloggc:<filename>

-XX:+PrintGCTimeStamps表示打印垃圾收集的时间戳信息;

-XX:+PrintGCDetails表示打印垃圾收集的细节信息;

-xloggc:<filename>表示将垃圾收集的信息输出到<filename>文件;

17.058: [GC17.059: [DefNew: 157312K->19648K(176960K), 0.0532497 secs]
         157312K->25567K(504640K), 0.0534119 secs] 
         [Times: user=0.06 sys=0.00, real=0.05 secs] 
1197.554: [Full GC1197.554: 
          [Tenured: 93097K->113201K(327680K), 0.6489667 secs] 
          259329K->113201K(504640K), 
          [Perm : 58938K->58938K(98304K)], 0.6490816 secs] 
          [Times: user=0.30 sys=0.02, real=0.65 secs] 

以上是我从输出的垃圾回收信息里面截取的两段,上面是执行minor GC信息,下面是执行Full GC信息,我们以第一段为例:

[DefNew: 157312K->19648K(176960K), 0.0532497 secs]

这段表示的是新生代垃圾回收的信息,回收前157312K回收后变为19648K,新生代分为Eden区和两个survivor,minor GC之后Eden区为空,其实19648K就是survivor区的大小,后面是所用的时间;

157312K->25567K(504640K), 0.0534119 secs]

这段提供了堆空间的回收前后的信息,已知堆空间和新生代的大小,则可以大致算出老年代的大小为:504640K-176960K=327680,回收前老年代大小为:157312K-157312K=0,回收后老年代大小为:25567K-19648k=5919k。

知道了垃圾回收的信息以及调优的原则,那么调优就变得简单了。在这里我们可以借助jConsole和jvisualvm等工具进行调优。对堆空间大小、新生代大小进行不断地调整,调整后再进行分析和对比。这是一个反复和循序渐进的过程,在这里直接贴一个别人写的详细的调优过程,大家可以作为参考:点击这里

调整参数:

-Xms:堆空间初始化化大小;

-Xmx:堆空间的最大值,一般-Xms与-Xmx设置为同一个值;

-Xmn:新生代空间的大小;

-XX:PermSize:永久带空间初始值及最小值;

-XX:MaxPermSize:永久带空间最大值,这两个值一般也设置为同一个值;

-

转载于:https://my.oschina.net/powerisam/blog/690839

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值