JVM参数调优

 • GC日志参数

-XX:+PrintGC
输出GC日志
-XX:+PrintGCDetails
输出GC的详细日志
-XX:+PrintGCTimeStamps
输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps
输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC
在进行GC的前后打印出堆的信息
-Xloggc:../logs/gc.log
日志文件的输出路径

 

 

 

 

 

 

 

 

 

 

 

 

• 公共参数

-Xms

Heap area size when starting JVM

启动JVM时的堆内存空间。

-Xmx

Maximum heap area size

堆内存最大限制

-XX:NewRatio

Ratio of New area and Old area

新生代和老年代的占比

-XX:NewSize

New area size

新生代空间

-XX:SurvivorRatio

Ratio ofEdenarea and Survivor area

伊甸园空间和幸存者空间的占比

 

 

 

 

 

 

 

 

 

  

 

 

 

 

 

• G1参数

-XX:+UseG1GC 启用 G1 (Garbage First) 垃圾收集器
-XX:MaxGCPauseMillis

设置允许的最大GC停顿时间(GC pause time),这只是一个期望值,

实际可能会超出,可以和年轻代大小调整一起并用来实现。默认是200ms

-XX:G1HeapRegionSize

每个分区的大小,默认值是会根据整个堆区的大小计算出来,范围是1M~32M,

取值是2的幂,计算的倾向是尽量有2048个分区数。比如如果是2G的heap,那region=1M。16Gheap,region=8M

-XX:MaxTenuringThreshold=n 晋升到老年代的“年龄”阀值,默认值为 15
-XX:InitiatingHeapOccupancyPercent

一般会简写IHOP,默认是45%,这个占比跟并发周期的启动相关,当空间占比达到这个值时,

会启动并发周期。如果经常出现FullGC,可以调低该值,尽早的回收可以减少FullGC的触发,

但如果过低,则并发阶段会更加频繁,降低应用的吞吐

-XX:G1NewSizePercent  年轻代最小的堆空间占比,默认是5%
-XX:G1MaxNewSizePercent 年轻代最大的堆空间占比,默认是60%
-XX:ConcGCThreads 并发执行的线程数,默认值接近整个应用线程数的1/4
-XX:G1HeapWastePercent 允许的浪费堆空间的占比,默认是5%。如果并发标记可回收的空间小于5%,则不会触发MixedGC
-XX:G1MixedGCCountTarget  一次全局并发标记之后,后续最多执行的MixedGC次数。 默认值是8
-XX:MetaspaceSize 初始化元空间大小,控制发生GC阈值
-XX:MaxMetaspaceSize 限制元空间大小上限,防止异常占用过多物理内存

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 在JDK1.8版本废弃了永久代,替代的是元空间(MetaSpace),元空间与永久代上类似,都是方法区的实现,他们最大区别是:元空间并不在JVM中,而是使用本地内存。

 元空间有注意有两个参数:

  • MetaspaceSize :初始化元空间大小,控制发生GC阈值
  • MaxMetaspaceSize : 限制元空间大小上限,防止异常占用过多物理内存

 

posted @ 2019-05-27 15:11  killerqi  阅读(473)  评论(0编辑  收藏  举报