JVM常用调优参数

JVM 常用参数:

XX:RestrictContended 开启独占缓存行
-Xmixed 默认为混合模式。开始是解释执行,过程中JIT对热点代码进行检测和编译
-Xint 纯解释执行模式(int为intepreter缩写),启动速度快,执行稍慢
-Xcomp 纯编译模式(comp为compiler缩写),启动速度慢,执行很快
-XX:CompileThreshold=10000 检测热点代码
-XX:+PrintCommandLineFlags -version 命令行查看虚拟机配置
-XX:+UseCompressedClassPointers 开启对象头ClassPointer指针压缩
-XX:+UseCompressedOops 开启成员变量中的普通对象指针压缩
-Xms 设置起始 java heap 的大小
-Xmx 设置最大 java heap 的大小
-Xmn 设置新生代的大小
-XX:MaxTenuringThreshold 配置对象进入老年代的年龄阈值 最大值15,默认15.CMS是6
-XX:-DoEscapeAnalysis 逃逸分析
-XX:-EliminateAllocations 标量替换
-XX:-UseTLAB TLAB
-XX:SurvivorRatio,控制eden和survivor的空间比例,默认=8,表示eden和单个survivor的比例为8:1
-XX:PretenureSizeThreshold 设置值的对象直接在老年代分配
-XX:NewRatio 设置新生代与老年代的比例,默认=2,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2
-XX:TargetSurvivorRatio 设置 survivor 区对象动态年龄百分比阈值,默认为50%
-XX:CMSlnitiatingOccupancyFraction 老年代触发CMS的阈值,默认92%
-XX:MetaspaceSize 设置元空间初始大小
-XX:MaxMetaspaceSize 设置元空间最大值
-XX:+PrintGC 和GC相关的打印输出
-XX:+PrintGCDetail
-XX:+PrintGCCause
-XX:+PrintGCTimeStamps
-XX:+HeapDumpOnOutOfMemoryError 开启堆OOM异常的信息输出,可配合jmap命令
防止内存抖动
比如 -Xmx和-Xms会设置成一样的,不要让它产生弹性调整,因为那样会浪费系统宝贵的计算资源。它不止会过大,还会收缩,所以来回弹性调整对系统影响较大。

GC常用参数

Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间
-XX:+UseTLAB 使用TLAB,默认打开
-XX:+PrintTLAB 打印TLAB的使用情况
-XX:TLABSize 设置TLAB大小
-XX:+DisableExplictGC System.gc()不管用 ,FGC
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintHeapAtGC
-XX:+PrintGCTimeStamps
-XX:+PrintGCApplicationConcurrentTime (低) 打印应用程序时间
-XX:+PrintGCApplicationStoppedTime (低) 打印暂停时长
-XX:+PrintReferenceGC (重要性低) 记录回收了多少种不同引用类型的引用
-verbose:class 类加载详细过程
-XX:+PrintVMOptions
-XX:+PrintFlagsFinal -XX:+PrintFlagsInitial 必须会用
-Xloggc:opt/log/gc.log
-XX:MaxTenuringThreshold 升代年龄,最大值15
锁自旋次数 -XX:PreBlockSpin 热点代码检测参数-XX:CompileThreshold 逃逸分析 标量替换 … 这些不建议设置

Parallel常用参数

XX:SurvivorRatio
-XX:PreTenureSizeThreshold 大对象到底多大
-XX:MaxTenuringThreshold
-XX:+ParallelGCThreads 并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同
-XX:+UseAdaptiveSizePolicy 自动选择各区大小比例

CMS常用参数

XX:+UseConcMarkSweepGC
-XX:ParallelCMSThreads CMS线程数量
-XX:CMSInitiatingOccupancyFraction 使用多少比例的老年代后开始CMS收集,默认是68%(近似值),如果频繁发生SerialOld卡顿,应该调小,(频繁CMS回收)
-XX:+UseCMSCompactAtFullCollection 在FGC时进行压缩
-XX:CMSFullGCsBeforeCompaction 多少次FGC之后进行压缩
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingPermOccupancyFraction 达到什么比例时进行Perm回收
GCTimeRatio 设置GC时间占用程序运行时间的百分比
-XX:MaxGCPauseMillis 停顿时间,是一个建议时间,GC会尝试用各种手段达到这个时间,比如减小年轻代

G1常用参数

XX:+UseG1GC
-XX:MaxGCPauseMillis 建议值,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的堆空间占用比例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值