JVM参数附录

JVM参数附录

  • -XX:+<option> 启用选项
  • -XX:-<option>不启用选项
  • -XX:<option>=<number>
  • -XX:<option>=<string>

内存参数

参数 默认值 描述
-XX:+DisableExplicitGC 关闭 忽略System.gc()方法触发的垃圾收集
-XX:+ExplicitGCInvokesConcurrent 关闭 当收到System.gc()提交的垃圾收集申请时,使用CMS收集器回收
-XX:+UseSerialGC Client模式默认开启,其他模式默认关闭 Jvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收
-XX:+UseParNewGC 默认关闭 打开此开关后,使用ParNew + Serial Old的收集器进行垃圾回收
-XX:+UseConcMarkSweepGC 默认关闭 使用ParNew + CMS + Serial Old的收集器组合进行内存回收,Serial Old作为CMS出现“Concurrent Mode Failure”失败后的后备收集器使用。
-XX:+UseParallelGC Server模式默认开启,其他模式关闭 Jvm运行在Server模式下的默认值,打开此开关后,使用Parallel Scavenge + Serial Old的收集器组合进行回收
-XX:+UseParallelOldGC 默认关闭 使用Parallel Scavenge + Parallel Old的收集器组合进行回收
-XX:SurvivorRatio 默认:8 新生代中Eden区域与Survivor区域的容量比值,默认为8,代表Eden:Subrvivor = 8:1
-XX:PretenureSizeThreshold 默认:无 直接晋升到老年代对象的大小,设置这个参数后,大于这个参数的对象将直接在老年代分配
-XX:MaxTenuringThreshold 默认:15 晋升到老年代的对象年龄,每次Minor GC之后,年龄就加1,当超过这个参数的值时进入老年代
-XX:UseAdaptiveSizePolicy 默认开启 动态调整java堆中各个区域的大小以及进入老年代的年龄
-XX:+HandlePromotionFailure JDK1.5及以前默认关闭,1.6默认开启 是否允许新生代收集担保,进行一次minor gc后, 另一块Survivor空间不足时,将直接会在老年代中保留
-XX:ParallelGCThreads 少于或等于8个cpu时,默认为cpu数量,多于8个时比cpu数量值小 设置并行GC进行内存回收的线程数
-XX:GCTimeRatio 默认:99 GC时间占总时间的比列,默认值为99,即允许1%的GC时间,仅在使用Parallel Scavenge 收集器时有效
-XX:MaxGCPauseMillis 默认:无 设置GC的最大停顿时间,在Parallel Scavenge 收集器下有效
-XX:CMSInitiatingOccupancyFraction 默认:68 设置CMS收集器在老年代空间被使用多少后出发垃圾收集,默认值为68%,仅在CMS收集器时有效
-XX:+UseCMSCompactAtFullCollection 默认:开启 由于CMS收集器会产生碎片,此参数设置在垃圾收集器后是否需要一次内存碎片整理过程,仅在CMS收集器时有效
-XX:+CMSFullGCBeforeCompaction 默认:无 设置CMS收集器在进行若干次垃圾收集后再进行一次内存碎片整理过程,通常与UseCMSCompactAtFullCollection参数一起使用
-XX:+ScavengeBeforeFullGC 默认:开启 Full GC前触发一次Minor GC
-XX:+UseGCOverheadLimit 默认:开启 禁止GC过程无限制执行,如过于频繁,直接发生OutOfMemory异常
-XX:+UseTLAB server模式默认开启 优先在本地线程缓冲区中分配对象,避免分配内存时的锁定过程
-XX:MaxHeapFreeRaito 默认:70 当Xmx比Xms值大时,堆可以动态收缩和扩展,这个参数控制当堆空闲大于指定值时自动收缩
-XX:MinHeapFreeRaito 默认:40 当Xmx比Xms值大时,堆可以动态收缩和扩展,这个参数控制当堆空闲小于指定值时自动扩展
-XX:MaxPermSize 默认 64M 设置永久代大小
-XX:+CMSParallelRemarkEnabled 默认关闭 降低标记停顿

即时编译

参数 默认值 描述
-XX:CompileThreshold client模式默认1500,server默认10000 触发方法即时编译的阈值
-XX:OnStackReplacePercentage Client默认值是933,server默认140 OSR比率,OSR即时编译阈值计算公式的参数之一
-XX:ReservedCodeCacheSize 默认32M 即时编译器编译代码的缓存最大值

多线程参数

参数 默认值 描述
-XX:+UseFastAccessorMethods 默认开启 频繁反射时,生成字节码来加速
-XX:UseSpinning 1.6默认开启,1.5默认关闭 开启自旋锁
-XX:PreBlockSpin 默认:10 自旋锁默认自旋次数
-XX:UseThreadPriorities 默认开启 使用本地线程优先级
-XX:UseBaisedLocking 默认开启 开启偏向锁

性能参数

参数 默认值 描述
-XX:AggressiveOpts 1.6默认开启,1.5关闭 使用激进的优化特性
-XX:UseLargePages 默认开启 大内存分页
-XX:StringCache 默认开启 字符串缓存
-XX:LargePageSizeInBytes 默认4M 内存页的大小不可设置过大,会影响Perm的大小,-XX:LargePageSizeInBytes=128m,需要OS支持

验证参数

参数 默认值 描述
-XX:+FailOverToOldVerifier 默认关闭,1.6引入 当新类型检查程序失败时,将转移到旧的验证程序。
-XX:-RelaxAccessControlCheck 默认开启 在验证程序中放松访问控制检查。

调试参数

参数 描述
-verbose:gc 开启打印垃圾回收日志
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-XX:+PrintGCApplicationStoppedTime 输出GC造成应用暂停的时间
-XX:+PrintGCApplicationConcurrentTime 打印每次垃圾回收前,程序未中断的执行时间
-XX:+HeapDumpOnOutOfMemoryError 发生OOM的时候自动dump堆栈方便分析
-Xnoclassgc 关闭CLASS的垃圾回收功能
-Xloggc:../logs/gc.log 日志文件的输出路径
-XX:+PrintTenuringDistribution 显示在survivor空间里面有效的对象的岁数情况,在每一个岁数上面,对象的存活的数量,以及其增减情况
-verbose:class 开启类加载日志
-Xmx ? 设置JVM最大可用内存为?
-Xms ? 设置JVM初始内存为?
-Xmn ? 设置年轻代大小 ?
-Xss ? 设置每个线程的堆栈大小 ?
-XX:OnOutOfMemoryError 发生内存溢出异常时,执行的命令
-XX:OnError 发生Error异常时,执行的命令
-XX:+PrintClassHistogram 输出类统计状态
-XX:+PrintConcurrentLocks 输出J.U.C中锁状态
-XX:+TraceClassLoading 查看类加载信息
-XX:+TraceClassUnLoading 查看类卸载信息

参考资料:

  • hotspot vm options
-------------本文结束感谢您的阅读-------------
坚持分享,您的支持将鼓励我继续创作!
0%