0°

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日志中)






「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
JVM
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论