JVM常用参数

Posted by Monk on April 10, 2020

(-XX:+TraceClassLoading)表示开启 TraceClassLoading 选项:以 -XX参数开头,+表示开启选项,-表示关闭选项 后面跟上JVM参数

赋值类参数: -XX:<option>=<value> 表示将 option选项的值设置为value (-XX:+TraceClassUnloading) 表示开启类的卸载日志

  1. -Xms:设置堆空间的最小值或初始值
  2. -Xmx:设置堆空间的最大值
  3. -Xss:设置堆栈的大小 -Xss100k 设置容量为100k
  4. -Xmn:堆空间中新生代的大小
  5. -XX:+HeapDumpOnOutOfMemoryError:将异常信息存储到磁盘
  6. -XX:+PrintCommandLineFlags
  7. -XX:PretenureSizeThreshold=4194304 设置对象的大小如果超过了4194304(单位字节,这里表示4M),那么对象直接进入老年代,==该值需要和特定的收集器组合使用,-XX:+UseSerialGC==
  8. -XX:+UseSerialGC 使用Serial收集器
  9. -XX:+PrintCommandLineFlags 打印程序启动的命令行参数

元空间

  1. -XX:MetaspaceSize:是分配给类元数据空间(以字节计)的初始大小(Oracle逻辑存储上的初始高水位
  2. -XX:MaxMetaspaceSize=200M 设置元空间的大小为200M
  3. -XX:MinMetaspaceFreeRatio:设置元空间空闲比例的最小值
  4. ‑XX:MaxMetaspaceFreeRatio:设置元空间空闲比例的最大值

GC

  1. -verbose:gc 会输出GC的详细信息
  2. -XX:+PrintGCDateStamps -XX:+PrintGCDetails 打印GC的详细信息
  3. -XX:SurvivorRatio=8 表示Eden和Survivor区域的比值
  4. -XX:MaxTenuringThreshold=5 : 主要是控制新生代需要经历多少次GC晋升到老年代中的最大阈值,因为在对象头中有4个bit来存储对象的分代年龄,所以默认为15
  5. -XX:+PrintTenuringDistribution : 丰富了gclog部分
  6. -XX:SurvivorRatio=8:设置Eden区域和Survivor区域的比值为8:1:1
  7. -XX:TargetSurvivorRation=60 : 代表survivor空间占用的比值到达60%后就要重新计算对象晋升阈值
  8. -XX:+UseConcMarkSweepGC : 在老年代使用CMS收集器
  9. -XX:+UseParNewGC : 使用ParNew收集器

G1收集器相关参数

  1. -XX:+UseG1GC: 使用G1收集器
  2. G1HeapWastePercent: 在Global COncurrent Marking结束之后,我们可以知道Old区中有多少空间要被回收,在每次YGC之后和再次发生Mixed GC之前,会检查垃圾占比是否达到此参数,只有达到了,下一次才会进行MixeGC
  3. G1MixedGCLiveThresholdPercent:Old区中的存活对象的占比,只有在此参数下,才会被选入CSet
  4. G1MixedGCCountTarget:一次Global COncurrent Marking之后,最多执行MixedGC的次数
  5. G1OldCSetRegionThresholdPercent: 一次Mixed GC中能被选入CSet的最多Old区的数量
  6. -XX:G1HeapRegionSize=n :设置Region大小,并非最终值
  7. -XX:MaxGCPauseMillis: 设置GC收集过程中的停顿时间,默认200ms,不是硬性条件
  8. -XX:G1NewSizePercent: 新生代最小值,默认5%
  9. -XX:G1MaxNewSizePercent: 新生代最大值,默认60%
  10. -XX:ParallelGCThreads: STW期间,并行GC线程数
  11. -XX:ConcGCThreads=n: 并发标记阶段,并行执行的线程数
  12. -XX:InitiatingHeapOccupancyPercent: 设置触发标记周期Java堆占用率阈值,默认45%,这里的Java堆占比指的是non_young_capacity_bytes,包括old+humongous