JVM第十二天-GC-常用命令行参数

HotSpot JVM参数分类

标准: - 开头,所有的HotSpot都支持
非标准:-X 开头,特定版本HotSpot支持特定命令
不稳定:-XX 开头,下个版本可能取消

通用命令

-Xmn 指定堆内年轻代初始化大小(如果只指定这个参数,那么最大大小也是这个大小)
-Xms 指定堆初始化大小
-Xmx 指定堆最大大小
(堆的初始化大小和最大大小建议设置成一致,不要有弹性,会导致系统消耗计算资源)
-Xss 栈空间大小
-XX:+UseTLAB 使用TLAB,默认打开
-XX:+PrintTLAB 打印TLAB的使用情况
-XX:TLABSize 设置TLAB大小

-XX:+DisableExplictGC
禁用System.gc(),一般要开启,因为调用它会造成FGC

-XX:+PrintGC 打印GC信息
-XX:+PrintGCDetails 打印GC详细信息
-XX:+PrintGCTimeStamps 打印GC时间戳
-XX:+PrintGCApplicationConcurrentTime 打印应用程序时间
-XX:+PrintGCApplicationStoppedTime 打印暂停时长
-XX:+PrintReferenceGC 记录回收了多少种不同引用类型的引用
-XX:+PrintHeapAtGC 打印堆信息
-XX:+PrintGCCauses 打印GC原因
-XX:+PrintVMOptions 打印JVM设置信息
-XX:+PrintCommandLineFlags 打印本次程序生效的命令行参数
-XX:+PrintFlagsInitial 默认参数值
-XX:+PrintFlagsFinal 最终参数值
-XX:+PrintFlagsFinal | grep xxx 找到对应的参数
-XX:+PrintFlagsFinal -version |grep GC

-Xloggc:opt/log/gc.log 指定GC日志路径

-verbose:class 类加载详细过程

这些不建议设置:

XX:MaxTenuringThreshold 升代年龄,最大值15
-XX:PreBlockSpin 锁自旋次数
-XX:CompileThreshold 热点代码检测参数
-XX:+DoEscapeAnalysis逃逸分析
-XX:+EliminateAllocations标量替换

-XX:+UseConcMarkSweepGC 垃圾回收器使用PAR NEW+CMS

Parallel常用参数

-XX:SurvivorRatio eden区和survivor区的比例
-XX:PreTenureSizeThreshold 大对象直接放入老年代,这里就是定义大对象到底是多大
-XX:+ParallelGCThreads 并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
-XX:+UseAdaptiveSizePolicy 自动选择各区大小比例

CMS常用参数

XX:+UseConcMarkSweepGC 开启CMS

-XX:ParallelCMSThreads CMS线程数量
默认为CPU核数的一半,要合理设置,因为CMS只管OLD区,要留一些给应用程序

-XX:CMSInitiatingOccupancyFraction CMS收集启动比例阈值
使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小,(如果调的太小,也会导致频繁CMS回收,需要合理设置)

-XX:+UseCMSCompactAtFullCollection 在FGC时进行压缩
-XX:CMSFullGCsBeforeCompaction 多少次FGC之后进行压缩
-XX:+CMSClassUnloadingEnabled 开启卸载Class元信息
-XX:CMSInitiatingPermOccupancyFraction 达到什么比例时进行Perm(永久代)回收
-XX:GCTimeRatio 设置GC时间占用程序运行时间的百分比
-XX:MaxGCPauseMillis 停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代

G1常用参数

XX:+UseG1GC 启用G1垃圾回收器
-XX:MaxGCPauseMillis 期望GC停顿时间
建议值,G1会尝试调整Young区的块数来达到这个值

-XX:GCPauseIntervalMillis GC的停顿间隔时间
-XX:+G1HeapRegionSize region每个分区的大小
分区大小,建议逐渐增大该值,1 2 4 8 16 32。
随着size增加,垃圾的存活时间更长,GC间隔更长,但每次GC的时间也会更长
ZGC做了改进,它会动态区块大小,而无需再人工手动设置这个值。

G1NewSizePercent 新生代最小比例
默认为5%

G1MaxNewSizePercent 新生代最大比例
默认为60%

GCTimeRatio GC时间建议比例
G1会根据这个值调整堆空间,这个和MaxGCPauseMillis效果类似,一般我们设置MaxGCPauseMillis即可。

ConcGCThreads 线程数量

InitiatingHeapOccupancyPercent 启动G1混合收集的堆空间占用比例阈值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值