CMS垃圾收集器参数
CMS垃圾收集器通用参数设置
1
2
3
4
5
6
7
8
9
10
11
12
13
-Xms4096M
-Xmx4096M
-Xmn2048M
-Xss256k
-XX:MetaspaceSize=512M
-XX:MaxMetaspaceSize=512M
-XX:+UseConcMarkSweepGC
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=70
-XX:+CMSScavengeBeforeRemark
-XX:+CMSClassUnloadingEnabled
-XX:+ParallelRefProcEnabled
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-XX:+UseConcMarkSweepGC
使用并发标记清除(CMS)收集器。
-XX:+CMSParallelRemarkEnabled
启用并行标记,降低标记停顿。
-XX:+CMSConcurrentMTEnabled
当该标志被启用时,并发的CMS阶段将以多线程执行(因此,多个GC线程会与所有的应用程序线程并行工作)。该标志已经默认开启,如果顺序执行更好,这取决于所使用的硬件,多线程执行可以通过-XX:-CMSConcurremntMTEnabled禁用。
-XX:ConcGCThreads=
定义并发CMS过程运行时的线程数,默认设置ConcGCThreads = (ParallelGCThreads +3)/4。
-XX:+ParallelCMSThreads
设定 CMS 的线程数量。
-XX:CMSInitiatingOccupancyFraction=70
使用CMS作为垃圾回收使用70%后开始CMS收集。
-XX:+UseCMSInitiatingOccupancyOnly
使用设定的回收阈值(下面指定的70%)开始CMS收集,如果不指定,JVM仅在第一次使用设定值,后续则自动调整。
-XX:+CMSClassUnloadingEnabled
相对于并行收集器,CMS收集器默认不会对永久代进行垃圾回收。如果希望回收,就使用该标志,注意,即使没有设置这个标志,一旦永久代耗尽空间也会尝试进行垃圾回收,但是收集不会是并行的,而再一次进行Full GC。
-XX:+CMSIncrementalMode
采用增量式的标记方式,减少标记时应用停顿时间。
-XX:+ExplicitGCInvokesConcurrent
JVM无论什么时候调用系统GC,都执行CMS GC,而不是Full GC。
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
保证当有系统GC调用时,永久代也被包括进CMS垃圾回收的范围内。
-XX:+DisableExplicitGC
JVM完全忽略系统的GC调用(不管使用的收集器是什么类型)。
-XX:+CMSScavengeBeforeRemark
CMS remark前回收年轻代内存。
-XX:+CMSParallelRemarkEndable
启用并行重标记。
-XX:CMSInitatingPermOccupancyFraction
当永久区占用率达到这一百分比后,启动 CMS 回收 (前提是-XX:+CMSClassUnloadingEnabled 激活了)。
-XX:+CMSIncrementalMode
该标志将开启CMS收集器的增量模式。增量模式经常暂停CMS过程,以便对应用程序线程作出完全的让步。因此,收集器将花更长的时间完成整个收集周期。因此,只有通过测试后发现正常CMS周期对应用程序线程干扰太大时,才应该使用增量模式。由于现代服务器有足够的处理器来适应并发的垃圾收集,所以这种情况发生得很少。
-XX:CMSFullGCsBeforeCompaction=0
多少次full GC 后压缩old generation一次。
-XX:+CMSParallelInitialMarkEnabled
初始化标记阶段是串行的,这是JDK7的行为。JDK8以后默认是并行的,可以通过参数-XX:+CMSParallelInitialMarkEnabled控制。
-XX:CMSIncrementalDutyCycleMin=n
每次增量回收垃圾的占总垃圾回收任务的最小比例,默认是0
-XX:CMSIncrementalDutyCycle=n
每次增量回收垃圾的占总垃圾回收任务的比例,默认是10