标签:推荐 start 增加 算法 amp vivo 占用 老年 通过
JVM调优核心为调整年轻代、年老大的内存空间大小及使用GC发生器的类型等。start.sh文件内容,我们来分下:
java -server -Xms4G -Xmx4G -Xmn2G -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar c1000k.jar&
这台机器是一个4G内存的机器,因此:
-Xms4G 是指: JVM启动时整个堆(包括年轻代,年老代)的初始化大小。
-Xmx4G 是指: JVM启动时整个堆的最大值。
-Xmn2G是指:年轻代的空间大小,剩下的是年老代的空间。
-XX:SurvivorRatio=1是指:年轻代空间中2个Survivor空间与Eden空间的大小比例。此处为1:1:1,算法如下:比如整个年轻代空间为2G,如果比例为1,那么2/3,则S0/S1/Eden的空间大小是同样的,为666M。
该值不设置,则JDK默认为比例为8,那么是1:1:8,通过上面的算法可以得出S0/S1的大小。我们可以看到官方通过增大Eden区的大小,来减少YGC发生的次数,但有时我们发现,虽然次数减少了,但Eden区满
的时候,由于占用的空间较大,导致释放缓慢,此时stop-the-world的时间较长,因此需要按照程序情况去调优。
-XX:+UseConcMarkSweepGC是指:使用GC的回收类型。这里是CMS类型,JDK1.7以后推荐使用+UseG1GC,被称为G1类型(或Garbage First)的回收器。
5.2当我们设定好start.sh的参数值后,执行./start.sh此时就启动了。
我们可以通过jvisualvm.exe中的Visual GC插件查看GC的图形,我们也可以再服务器上执行:jstat -gc 15016 1000,看到每1秒钟java进程号为15016的GC回收情况。
[root@yxdevapp04 c1000k]# jstat -gc 15016 1000
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
699008.0 699008.0 29980.4 0.0 699136.0 116881.6 2097152.0 660769.4 21248.0 20071.0 354 54.272 0 0.000 54.272
699008.0 699008.0 29980.4 0.0 699136.0 118344.8 2097152.0 660769.4 21248.0 20071.0 354 54.272 0 0.000 54.272
699008.0 699008.0 29980.4 0.0 699136.0 119895.5 2097152.0 660769.4 21248.0 20071.0 354 54.272 0 0.000 54.272
699008.0 699008.0 29980.4 0.0 699136.0 121383.1 2097152.0 660769.4 21248.0 20071.0 354 54.272 0 0.000 54.272
解释如下:
S0C 是指:Survivor0区的分配空间
S0U 是指:Survivor1区的已经使用的空间
EC是指:Eden区所使用的空间
EU是指:Eden区当前使用的空间
OC是指:老年代分配的空间
OU是指:老年代当前使用的空间
PC是指:持久待分配的空间
PU是指:持久待当前使用的空间
YGC是指:年轻代发生的次数,这里是354次
YGCT是指:年轻代发送的总时长,这里是54.272秒,因此每次年轻代发生GC,即平均每次stop-the-world的时长为54.272/354=0.153秒。
FGC是指:年老代回收的次数,或者成为FullGC的次数。
FGCT是指:年老代发生回收的总时长。
GCT是指:包括年轻代YGC及年老代FGC的总时间长。
通常结合图形或数据,我们可以看到当EU即将等于EC的时候,此时发生YGC,因此YGC次数+1,YGCT时间增加。
经过实际的调优测试我们发现,当发生YGC的时候,如果S0U或S1U区如果有任意一个区域为0的时候,此时YGC的速度很快,相反如果S0U或者S1U中都有数据,或相对满的时候,此时YGC的时间边长,这就是因为S0/S1及Eden区的比例问题导致的。
5.3经过一定时间的调优,我们基本上可以使得YGC的次数非常少,时间非常快,很长时间,数天都不会发生FGC,此时JVM的调优算是一个好的结果。
5.4 在MAC电脑上可以通过jconsole调出图形化分析工具。
标签:推荐 start 增加 算法 amp vivo 占用 老年 通过
原文地址:https://www.cnblogs.com/du1216/p/13202716.html