JVM之GC常用配置参数

JVM常用参数

-XX:+PrintGCDetails:打印gc日志详细信息

-XX:+PrintGCTimeStamps:打印gc发生时相对jvm启动的时间戳,(后来加入了PrintGCDateStamps,打印gc发生的日期)

-Xloggc:设置gc日志的生成位置

-Xms4096M:堆容量初始值

-Xmx4096M:堆容量最大值

-Xmn1024M:新生代容量,所以老年代容量 = 堆容量 - 新生代容量 = 3072M

-Xss256K:线程堆栈空间大小

-XX:MaxDirectMemorySize:Direct Buffer Memory大小

-XX:NewRatio 用来来指定新生代和整个堆的大小比例,或者直接用–XX:NewSize来指定所需的新生代空间

-XX:SurvivorRatio Eden区与Survivor区的大小比值

-XX:MaxTenuringThreshold 设置对象在新生代中最大的存活次数,最大值15,并行回收机制默认为15,CMS默认为4。每经过一次YGC,年龄加1,当survivor区的对象年龄达到TenuringThreshold时,表示该对象是长存活对象,就会直接晋升到老年代

-XX:TargetSurvivorRatio 设定survivor区的目标使用率。默认50,即survivor区对象目标使用率为50%,最高90%

-XX:PretenureSizeThreshold 对象超过多大是直接在旧生代分配

-XX:+CMSParallelRemarkEnabled 降低标记停顿

-XX:MaxPermSize:设置持久代最大值 物理内存的1/4
-XX:PermSize:设置持久代(perm gen)初始值 	物理内存的1/64

 

 

 

GC串行回收器相关的参数

-XX:+UseSerialGC:在新生代和老年代使用串行收集器

-XX:SurvivorRatio:设置eden区大小和survivor区大小的比例

-XX:PretenureSizeThreshold:设置大对象直接进入老年代的阈值。当对象的大小超过这个值时,将直接在老年代分配。

-XX:MaxTenuringThreshold:设置对象进入老年代的年龄的最大值。每一次Minor GC后,对象年龄就加1。任何大于这个年龄的对象,一定会进入老年代。

并行GC相关的参数

-XX:+UseParNewGC:在新生代使用并行收集器

-XX:+UseParallelOldGC:老年代使用并行回收收集器

-XX:ParallelGCThreads:设置用于垃圾回收的线程数。通常情况下可以和CPU数量相等,但在CPU数量较多的情况下,设置相对较小的数值也是合理的。

-XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间。他的值是一个大于0的整数。收集器在工作时,会调整Java堆大小或者其他参数,尽可能把停顿时间控制在MaxGCPauseMillis以内。

-XX:GCTimeRatio:设置吞吐量大小。它是0-100的整数。假设GCTimeRatio的值为n,那么系统将花费不超过1/(1+n)的时间用于垃圾收集。

-XX:+UseAdaptiveSizePolicy:打开自适应GC策略。在这种模式下,新生代的大小、eden和survivor的比例、晋升老年代的对象年龄等参数会被自动调整,已达到在堆大小、吞吐量和停顿时间之间的平衡点。

CMS回收期相关的参数-在JDK1.7之后已经有更好的替代方案

-XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器

-XX:ParallelCMSThreads:设定CMS的线程数量

-XX:CMSInitiatingOccupancyFraction:设置CMS收集器在老年代空间被使用多少后触发,默认为68%

-XX:+UseCMSCompactAtFullCollection:设置CMS收集器完成垃圾收集后是否要进行一次内存碎片的整理

-XX:CMSFullGCsBeforeCompaction:设定进行多少次CMS垃圾回收后,进行一次内存压缩

-XX:+CMSClassUnloadingEnabled:允许对类元数据区进行回收

-XX:CMSInitiatingPermOccupancyFraction:当永久区占用率达到这一百分比时,启动CMS回收(前提是-XX:+CMSClassUnloadingEnabled激活了)

-XX:UseCMSInitiatingOccupancyOnlyn:表示只在到达阈值的时候才进行CMS回收

-XX:+CMSIncrementalMode:使用增量模式,比较适合单CPU。增量模式在JDK 8中标记为废弃,并将在JDK 9中彻底移除。

G1回收期相关的参数

-XX:+UseG1GC:使用G1回收器

-XX:MaxGCPauseMillis:设置最大垃圾收集停顿时间

-XX:GCPauseIntervalMillis:设置停顿间隔时间
-XX:+DisableExplicitGC:禁用显式GC

-XX:+ExplicitGCInvokesConcurrent:使用并发方式处理显式GC

TLAB相关参数

-XX:+UseTLAB:开启TLAB分配

-XX:+PrintTLAB:打印TLAB相关分配信息

-XX:TLABSize:设置TLAB大小

-XX:+ResizeTLAB:自动调整TLAB大小

一般JVM的GC参数可以像这样配置

JAVA_OPTS="$JAVA_OPTS -server -Xms3G -Xmx3G -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m -XX:+UseParallelOldGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/aaa/dump -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/usr/aaa/dump/heap_trace.txt -XX:NewSize=1G -XX:MaxNewSize=1G"

 

你可能感兴趣的:(JVM之GC常用配置参数)