JVM(堆,回收器)参数总结

堆参数

参数 描述
-Xms 设置JVM启动时堆的初始化大小。
-Xmx 设置堆最大值。
-Xmn 设置年轻代的空间大小,剩下的为老年代的空间大小。
-XX:PermGen 设置永久代内存的初始化大小。
-XX:MaxPermGen 设置永久代的最大值。
-XX:SurvivorRatio 提供Eden区和survivor区的空间比例。比如,如果年轻代的大小为10m并且VM开关是-XX:SurvivorRatio=2,那么将会保留5m内存给Eden区和每个Survivor区分配2.5m内存。默认比例是8。
-XX:NewRatio 提供年老代和年轻代的比例大小。默认值是2。

回收器参数

类型 描述
-XX:+UseSerialGC(串行) Young区和old区都使用serial 垃圾回收算法,。算法:标记,清除(正常清除,整理清除:重新整理冗余空间,提高重新分配空间效率)
-XX:+UseParallelGC(并行) Young区:使用Parallel scavenge 回收算法,会产生多个线程并行回收。通过-XX:ParallelGCThreads=n参数指定有线程数,默认是CPU核数。old区单线程。
-XX:+UseParallelOldGC(并行) 和UseParallelGC一样,年轻代垃圾收集和年老代垃圾回收时都使用多线程收集
-XX:+UseConcMarkSweepGC(并发) 短暂停顿的并发的收集。Young区:可以使用普通的或者parallel 垃圾回收算法,由参数 -XX:+UseParNewGC来控制。Old 区:只能使用Concurrent Mark Sweep
-XX:+UseG1GC 并行的、并发的和增量式压缩短暂停顿的垃圾收集器。不区分年轻代和年老代空间。它把堆空间划分为多个大小相等的区域。当进行垃圾收集时,它会优先收集存活对象较少的区域,因此叫“Garbage First”。

目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。
并行和并发GC的策略通过UseParallelGC和UseConcMarkSweepGC来指定,
还有一些细节的配置参数用来配置策略的执行方式,
例如XX:ParallelGCThreads, XX:CMSInitiatingOccupancyFraction等。
通常:young区对象回收只可选择并行(耗时间),old区选择并发(耗CPU)。

项目中常用配置:
-Xms3g -Xmx3g
-XX:+UseConcMarkSweepGC
-XX:CMSMaxAbortablePrecleanTime=5000
-XX:+CMSClassUnloadingEnabled
-XX:CMSInitiatingOccupancyFraction=80 (old区百分之80触发cms gc,跟UseCMSInitiatingOccupancyOnly一起配合使用)
-XX:+UseCMSInitiatingOccupancyOnly

常用组合

Young Old JVM options
Serial Serial -XX:+UserSerialGC
Parallel scavenge Parallel Old/Serial -XX:+UserParallelGC -XX:-UserParallelOldGC
Serial/Parallel scavenge CMS -XX:-UserParNewGC -XX:+UseConcMarkSweepGC
G1 -XX:UserG1GC

你可能感兴趣的:(JVM(堆,回收器)参数总结)