JVM常用调优参数

  • 1.JVM参数分类
  • 2.常用参数配置
  • 3.G1相关参数
  • 4.日志相关
  • 5.元空间
  • 6.查看jdk的jvm参数


1.JVM参数分类

  1. 标准:- 开头,所有的HotSpot都支持
  2. 非标准:-X 开头,特定版本HotSpot支持特定命令
  3. 不稳定:-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 默认参数值