JVM调优案例分享(七)

释放双眼,带上耳机,听听看~!

JVM具体还要根据环境、代码、GC频率、压测情况进行调整,以下是我进行上述条件之后调整的配置来分享。

CMS垃圾回收案例

堆内存调优:
-Xms2048m                               #堆内存初始值
-Xmx2048m                               #堆内存最大值

线程调优:
-Xss512k                                #每个线程值大小

新生代调优:
-Xmn512m                                #新生代标准值 
-XX:NewRatio=2                          #新生代与旧生代的比值
-XX:SurvivorRatio=2                     #Eden和Survivor的比值

非堆内存调优:
-XX:PermSize=128m                       #非堆内存最小值
-XX:MaxPermSize=128m                    #非堆内存最大值

垃圾回收:
-XX:+UseParNewGC                        #启动新生代ParNew垃圾回收器
-XX:+UseConcMarkSweepGC                 #启用老年代CMS ConcMarkSweep标记清除垃圾回收器
-XX:ParallelCMSThreads=8                #并行GC使用的线程数
-XX:+CMSPermGenSweepingEnabled          #为永久代启用CMS并发垃圾回收器
-XX:+CMSClassUnloadingEnabled           
-XX:CMSFullGCsBeforeCompaction=4        #每4此大GC后对空闲内存进行压缩

GC日志输出:
-XX:+PrintGCDetails                     #每次GC时打印详细信息
-XX:+PrintGCDateStamps                  #打印每次GC的时间戳
-XX:+PrintTenuringDistribution          #每次打印GC对象的年龄
-XX:+PrintGCApplicationStoppedTime      #打印每次GC的时间戳
-Xloggc:$CATALINA_BASE/logs/gc-%t.log   #输出gc日志文件名跟时间戳 %t 的格式为 YYYY-MM-DD_HH-MM-SS(当程序重启则写入一个新的gc日志中)

G1垃圾回收案例

堆内存调优:
-Xms2048m                               #堆内存初始值
-Xmx2048m                               #堆内存最大值

线程调优:
-Xss512k                                #每个线程值大小

新生代调优:
-Xmn512m                                #新生代标准值 
-XX:NewRatio=2                          #新生代与旧生代的比值
-XX:SurvivorRatio=2                     #Eden和Survivor的比值

非堆内存调优:
-XX:PermSize=128m                       #非堆内存最小值
-XX:MaxPermSize=128m                    #非堆内存最大值

垃圾回收:
-XX:+UseG1GC                            #启用G1垃圾回收
-XX:InitiatingHeapOccupancyPercent=30   #堆占用了多少比例的时候触发GC,默认占用率是整个 Java 堆的 45%
-XX:ParallelGCThreads=8                 #配置并行收集器的线程数,即同时8个线程一起进行垃圾回收。此值一般配置为与CPU数目相等
-XX:ConcGCThreads=4                     #并发GC使用的线程数
-XX:MaxGCPauseMillis=200                #最大GC停顿时间,这是个软目标,JVM将尽可能(但不保证)停顿小于这个时间(暂停时间目标50ms,默认200ms) 

GC日志输出:
-XX:+PrintGCDetails                     #每次GC时打印详细信息
-XX:+PrintGCDateStamps                  #打印每次GC的时间戳
-XX:+PrintTenuringDistribution          #每次打印GC对象的年龄
-XX:+PrintGCApplicationStoppedTime      #打印每次GC的时间戳
-Xloggc:$CATALINA_BASE/logs/gc-%t.log   #输出gc日志文件名跟时间戳 %t 的格式为 YYYY-MM-DD_HH-MM-SS(当程序重启则写入一个新的gc日志中)

人已赞赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索