JVM常用调优参数
- 1.JVM参数分类
- 2.常用参数配置
- 3.G1相关参数
- 4.日志相关
- 5.元空间
- 6.查看jdk的jvm参数
1.JVM参数分类
- 标准:- 开头,所有的HotSpot都支持
- 非标准:-X 开头,特定版本HotSpot支持特定命令
- 不稳定:-XX 开头,下个版本可能取消
2.常用参数配置
-Xms :初始堆大小
-Xmx :最大堆大小
-XX:NewSize=n :设置年轻代大小
-XX:NewRatio=n :设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n :设置持久代大小
-XX:+UseSerialGC:在新生代和老年代使用串行收集器
-XX:SurvivorRatio:设置eden区大小和survivior区大小的比例
-XX:NewRatio:新生代和老年代的比
-XX:+UseParNewGC:在新生代使用并行收集器
-XX:+UseParallelGC :新生代使用并行回收收集器
-XX:+UseParallelOldGC:老年代使用并行回收收集器
-XX:ParallelGCThreads:设置用于垃圾回收的线程数
-XX:+UseAdaptiveSizePolicy :UseParallelGC根据GC的情况自动计算计算 Eden、From 和 To 区的大小
-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
-XX:ParallelCMSThreads:设定CMS的线程数量
-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发
-XX:+UseCMSCompactAtFullCollection:设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片的整理
-XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩
-XX:+CMSClassUnloadingEnabled:允许对类元数据进行回收
-XX:CMSInitiatingPermOccupancyFraction:当永久区占用率达到这一百分比时,启动CMS回收
-XX:UseCMSInitiatingOccupancyOnly:表示只在到达阀值的时候,才进行CMS回收
3.G1相关参数
-XX:+UseG1GC :使用G1收集器
-XX:G1MixedGCLiveThresholdPercent=50 : 默认值是85%。规定只有存活对象低于85%的Region才可以被回收
-XX:G1HeapRegionSize=16 :使用G1收集器时,设置java堆被分割的大小
-XX:ParallelGCThreads=8 :配置并行收集器的线程数
-XX:ConcGCThreads=6 :并发GC的线程数量
-XX:MaxGCPauseMillis=200 :设置GC的最大暂停时间为200ms
4.日志相关
-verbose:gc 发生gc时,打印gc相关信息,设置gc日志,等同-XX:+PrintGC
-XX:+PrintGCDetails : 打印gc日志详细信息
-XX:+PrintGCDateStamps :打印GC日志时间戳
-verbose:gc -Xloggc:E:\gc-log\gc.log :生成gc日志
eg:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -verbose:gc -Xloggc:E:\gc-log\gc.log
5.元空间
‐XX:MetaspaceSize=256M 元空间初始值
‐XX:MaxMetaspaceSize=256M 元空间最大值
-XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集
6.查看jdk的jvm参数
命令:java -XX:+PrintCommandLineFlags -version
-XX:+PrintCommandLineFlags
-XX:+PrintFlagsFinal 最终参数值
-XX:+PrintFlagsInitial 默认参数值