JVM常用参数整理及垃圾收集器整理(保持更新)

-Xms:堆的最小值;

-Xmx:堆的最大值;

-Xmn:新生代的大小;

-XX:NewSize;新生代最小值;

-XX:MaxNewSize:新生代最大值;

方法区/永久代

jdk1.7及以前:-XX:PermSize;-XX:MaxPermSize;

jdk1.8以后:-XX:MetaspaceSize; -XX:MaxMetaspaceSize;

 

直接内存

-XX:MaxDirectMemorySize(默认与堆内存最大值一样)

如何启用栈上分配

-server JVM运行的模式之一, server模式才能进行逃逸分析, JVM运行的模式还有mix/client

-Xmx10m和-Xms10m:堆的大小

-XX:+DoEscapeAnalysis:启用逃逸分析(默认打开)

-XX:+PrintGC:打印GC日志

-XX:+EliminateAllocations:标量替换(默认打开)

-XX:-UseTLAB 关闭本地线程分配缓冲

 

垃圾回收器整理

Serial/Serial Old

最古老的,单线程,独占式,成熟,适合单CPU  服务器

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

-XX:+UseParNewGC 新生代使用ParNew,老年代使用Serial Old

-XX:+UseParallelGC 新生代使用ParallerGC,老年代使用Serial Old

 

ParNew

和Serial基本没区别,唯一的区别:多线程,多CPU的,停顿时间比Serial少

-XX:+UseParNewGC 新生代使用ParNew,老年代使用Serial Old

 

Parallel Scavenge(ParallerGC)/Parallel Old

-XX:+ UseParallelOldGC:新生代使用ParallerGC,老年代使用Parallel Old

-XX:MaxGCPauseMills  :参数允许的值是一个大于0的毫秒数,收集器将尽可能地保证内存回收花费的时间不超过设定值。

-XX:GCTimeRatio参数的值应当是一个大于0且小于100的整数,也就是垃圾收集时间占总时间的比率,相当于是吞吐量的倒数。如果把此参数设置为19,那允许的最大GC时间就占总时间的5%(即1/(1+19)),默认值为99,就是允许最大1%(即1/(1+99))的垃圾收集时间。

-XX:+UseAdaptiveSizePolicy 当这个参数打开之后,就不需要手工指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量,这种调节方式称为GC自适应的调节策略。

Concurrent Mark Sweep (CMS)

-XX:+UseConcMarkSweepGC ,表示新生代使用ParNew,老年代的用CMS

-XX:+UseCMSCompactAtFullCollection为了解决这个问题,CMS收集器提供了一个这个开关参数(默认就是开启的),用于在CMS收集器顶不住要进行FullGC时开启内存碎片的合并整理过程,内存整理的过程是无法并发的,空间碎片问题没有了,但停顿时间不得不变长。

-XX:CMSFullGCsBeforeCompaction,这个参数是用于设置执行多少次不压缩的Full GC后,跟着来一次带压缩的(默认值为0,表示每次进入FullGC时都进行碎片整理)。

G1

-XX:+UseG1GC

-XX:MaxGCPauseMillis 指定目标的最大停顿时间,G1尝试调整新生代和老年代的比例,堆大小,晋升年龄来达到这个目标时间。

-XX:ParallerGCThreads:设置GC的工作线程数量

猜你喜欢

转载自blog.csdn.net/u013361107/article/details/90176295