一、GC 常用的参数
Xmn
: 年轻代Xms
: 最小堆Xmx
: 最大堆Xss
: 堆空间
- 堆内存最大和最小设置一样,预防内存抖动。
shell
java -Xms256m -Xmx256m xxx.jar
-XX:+UseTLAB
: 使用TLAB, 默认打开
-XX:+UseTLAB
: 打印TLAB使用情况
-XX:+DisableExplictGC
: System.gc() 不管用, FGC
-XX:+PrintGC
: 打印GC信息-XX:+PrintGCDetails
: 打印GC详细信息-XX:+PrintHeapAtGC
: 打印GC堆的概况-XX:+PrintGCTimeStamps
: 打印GC执行时间
-XX:+PrintGCApplicationConcurrentTime(低)
: 打印应用程序时间
-XX:+PrintGCApplicationStoppedTime(低)
: 打印暂停时长
-XX:+PrintReferenceGC (重要性低)
: 记录回收了多少种不同引用类型的引用
-verbose:class
: 类加载详细过程
-XX:+PrintVMOptions
: 打印VM设置操作参数
-XX:+PrintFlagsFinal -XX:+PrintFlagsInitial
:打印GC -XX 使用命令列表
-Xloggc:/opt/log/gc.log
: 保存GC日志地址
-XX:MaxTenuringThreshold
: 升代年龄,最大值15
-XX:PreBlockSpin
: 锁自旋次数-XX:CompileThreshold
: 热点代码检查参数
二、Paraller 常用参数
-XX:SurvivorRatio
: 设置S1或S0区内存比例
-XX:MaxTenuringThreshold
: 设置垃圾的最大年龄. 默认为15, 最大也是15 (在jdk8中. 范围为0~15)
-XX:+ParallelGCThreads
: 并行收集器的线程数, 同样适用于 CMS, 一般设为和CPU核数相同
-XX:+UseAdaptiveSizePolicy
: 自动选择各区大小比例
三、CMS 常用参数
-Xx:+UseConcMarkSweepGC
: 使用CMS垃圾收集器
-XX:ParallelCMSThreads
: CMS线程数量
-XX:CMSInitiatingOccupancyFraction
: 使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生Serial0ld卡顿,应该调小,(频繁CMS回收)
-XX:UseCMSCompactAtFullCollection
: 在FGC时进行压缩
-XX:CMSFullGCsBeforeCompaction
: 多少次FGC之后进行压缩
-XX:+CMSClassUnloadingEnabled
: CMS类卸载启用
-XX:CMSInitiatingPermOccupancyFraction
: CMS启动热占用率
GCTimeRatio
:设置GC时间占用程序运行时间的百分比
-XX:MaxGCPauseMillis
: 停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代
四、G1 常用参数
-XX:+UseG1GC
: 使用 G1 垃圾收集器
-XX:MaxGCPauseMillis
: 最大GC暂停时间(单位:毫秒), 建议值G1会尝试调整Young区的块数来达到这个值
-XX:GCPauseIntervalMillis
: GC的间隔时间
-XX:+G1HeapRegionSize
:- 分区大小,建议逐渐增大该值,1 2 4 8 16 32。
- 随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长ZGC做了改进(动态区块大小)
G1NewSizePercent
: 新生代最小比例,默认为5%
G1MaxNewSizePercent
: 新生代最大比例,默认为60%
GCTimeRatio
: GC时间建议比例,G1会根据这个值调整堆空间
ConcGCThreads
: 线程数量
InitiatingHeapOccupancyPercent
: 启动G1的堆空间占用比例