JVM参数整理

本文详细介绍了JVM的内存区域设置,包括堆、年轻代、老年代和方法区的大小,以及线程栈的大小。同时,讨论了不同类型的垃圾收集器,如ParallelGC、ParallelOldGC、ParNewGC等,并提到了如何设置最大停顿时间和并行标记线程数。此外,还强调了日志打印和内存溢出处理,以及CMS和G1垃圾收集器的相关参数,如CMSInitiatingOccupancyFraction和G1HeapRegionSize等,这些都对JVM性能优化至关重要。
摘要由CSDN通过智能技术生成

设置JVM各区域大小

参数含义说明
-XX:InitialHeapSize=100M堆初始大小简写:-Xms100M
-XX:MaxHeapSize=100M堆最大大小简写:-Xmx100M
-XX:NewSize=100M年轻代大小简写:-Xmn100M
-XX:MaxNewSize=size年轻代最大大小
-XX:MetaspaceSize=size设置方法区大小
-XX:MaxMetaspaceSize=size方法区最大大小默认是无限制的
-Xss1m设置每个线程堆栈大小经验值:3000-5000最佳
-XX:OldSize=50M设置老年代大小
-XX:NewRatio=ratio新生代:老年代=1:ratio-XX:NewRation=4,新:老=1:4,也就是新生代占1/5。默认1:2
-XX:SurvivorRatio=ratio两个S区:Eden比值-XX:SurvivorRatio=8,表示(s0+s1):Eden=2:8,也就是一个S区占新生代的1/10

设置垃圾收集器

参数含义说明
-XX:+UseParallelGC使用ParallelGC新生代、吞吐量优先。
-XX:+UseParallelOldGC使用ParallelOldGC老年代、吞吐量优先
-XX:+UseParNewGC使用ParNewGC新生代、吞吐量优先
-XX:+UseSerialGC使用 SerialGC串行
-XX:+UseConcMarkSweepGC使用CMC GC老年代,停顿时间优先
-XX:+UseG1GC使用G1GC新生代、老年代、停顿时间优先

日志打印

参数含义说明
-XX:+HeapDumpOnOutOfMemoryError启动堆内存溢出打印当JVM堆内存溢出时(OOM时),自动生成dump文件
-XX:HeapDumpPath=path堆内存溢出打印目录-XX:HeapDumpPath=heap.hprof
-XX:PrintGCDetails -XX:PrintGCDateStamps -XX:PrintGCDateStamps -Xloggc:gc.log打印GC日志输出到gc.log文件中,使用 gcviewer 查看
-XX:+PrintTenuringDistribution打印晋升老年代日志

部分重要参数

参数含义说明
-XX:MaxTenuringThreshold=threshold设置提升来年代的最大临界值默认值15
-XX:ConcGCThreads=n设置并行标记线程数一般设置为CPU核数的 1/4
-XX:MaxGCPauseMillis=time最大停顿时间-XX:MaxGCPauseMillis=500 设置最大停顿时间为500ms。
设置太小会导致GC跟不上垃圾产生的速度,最终退化为FullGc
-XX:+UseStringDeduplication字符串去重节省大量内存,略微占用CPU时间(新生代回收时间增加)。
JDK 8u20,默认关闭。
1. 将新分配的字符串放入队列
2. MinorGc时,g1并发检查是否有字符串重复。
3. 如果他们的值一样,让他们引用同一个 char[]
4. String.intern() 关注的是字符串对象,这里关注的是 char[]
-XX:+ClassUnloadingWithConcurrentMark并发标记类卸载默认开启。当并发标记后,一个类加载器的所有类都不再使用,
则卸载它加载的所有类。
-XX:+PrintFlagsFinal启动时,打印所有的虚拟机参数标记为{manageable}的参数,可以实时调整
-XX:CICompilerCount=2设置并行编译数建议:服务端JVM设置为2,客户端JVM设置为1

CMS参数

参数含义说明
-XX:CMSInitiatingOccupancyFraction=percent开始CMS垃圾回收周期的老年代内存阈值

G1参数

参数含义说明
-XX:InitiatingHeapOccupancyPercent=percentG1启动并发GC周期时,堆内存占比G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆的使用率,而不是某一代的使用比。默认值是 45%
-XX:G1HeapWastePercent=percent允许浪费堆空间占比默认10%。小于10%时,不会触发mixedGC
-XX:G1HeapRegionSize=size设置G1每个区域的大小设置范围:1MB ~ 32M , 目标是设置大约2048个区域-XX:G1HeapRegionSize=16m // 设置区域大小为16M
-XX:G1MixedGCLiveThresholdPercent=percent混合垃圾回收周期中,要包括的旧区域设置占用率阀值默认65%
-XX:G1MixedGCCountTarget=number在标记循环后设置混合垃圾收集的目标数量,以收集最多包含 G1OldCSetRegionThresholdPercent 活动数据的旧区域默认8次混合垃圾回收
-XX:G1OldCSetRegionThresholdPercent=percentMixedGC时,Old Region被加入到CSet中默认10%,只把10%的OldRegion加入到CSet中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值