JVM GC G1垃圾回收器配置

JVM G1配置

#堆内存最大最小值为4g
-Xms4g -Xmx4g 
#元空间128m,最大320m
-XX:MetaspaceSize=256m 
-XX:MaxMetaspaceSize=256m 
#开启远程debug
-Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n 

#使用G1垃圾收集器,在低延迟和高吞吐间寻找平衡,可以调整最大停止时间,设置新生代大小来提高吞吐量
-XX:+UseG1GC
#设置最大暂停时间,默认200ms
-XX:MaxGCPauseMillis=200
#指定Region大小,必须是2次幂,最大是32m
-XX:G1HeapRegionSize=2m
#反复执行混合回收8次,每次回收受MaxGCPauseMillis的影响可能一次性回收不了所有垃圾,增加次数回收的更彻底
-XX:G1MixedGCCountTarget=8
#混合回收整理出来的空闲空间占heap的10时,结果老年代的回收,默认5
-XX:G1HeapWastePercent=10
#设置新生代大小,最大60%,默认5%
-XX:G1NewSizePercent=10 -XX:G1MaxNewSizePercent=50
#新时代E区和S区比例,默认8:1:1
-XX:SurvivorRatio=8 
#在控制台输出GC情况
-verbose:gc 
#gc日志打印到执行日志文件
-Xloggc:./logs/job_execute_gc.log
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime 
#可以生成更详细的Survivor空间占用日志
-XX:+PrintAdaptiveSizePolicy 
#意为当jvm检测到程序在重复抛一个异常,在执行若干次后会将异常吞掉
-XX:-OmitStackTraceInFastThrow 
-XX:-UseLargePages
#指定加载配置文件
--spring.config.location=classpath:/,classpath:/config/,file:./,file:./config/,file:/home/mall-job/conf/

#高并发系统jvm参数配置示例---
-Xms10g -Xmx10g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=16m -XX:G1MixedGCCountTarget=8 -XX:G1MixedGCCountTarget=8 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -Xloggc:/logs/execute/mall-job-execute-gc.log

JVM G1参数说明

选项/默认值

说明

-XX:+UseG1GC

使用 G1 (Garbage First) 垃圾收集器

-XX:MaxGCPauseMillis=n

设置最大GC停顿时间(GC pause time)指标(target). 这是一个软性指标(soft goal), JVM 会尽量去达成这个目标.

-XX:InitiatingHeapOccupancyPercent=n

启动并发GC周期时的堆内存占用百分比. G1收集器用它来触发并发GC周期,基于整个堆的使用率, 默认值为 45.

-XX:NewRatio=n

新生代与老生代(new/old generation)的大小比例,默认值为 2.

-XX:SurvivorRatio=n

eden/survivor 空间大小的比例(Ratio). 默认值为 8.

-XX:MaxTenuringThreshold=n

提升年老代的最大临界值(tenuring threshold). 默认值为 15.

-XX:ParallelGCThreads=n

设置垃圾收集器在并行阶段使用的线程数,默认值随JVM运行的平台不同而不同.

-XX:ConcGCThreads=n

并发垃圾收集器使用的线程数量. 默认值随JVM运行的平台不同而不同.

-XX:G1ReservePercent=n

设置堆内存保留为假天花板的总量,以降低提升失败的可能性. 默认值是 10.

-XX:G1HeapRegionSize=n

使用G1时Java堆会被分为大小统一的的区(region)。此参数可以指定每个heap区的大小. 默认值将根据 heap size 算出最优解. 最小值为 1Mb, 最大值为 32Mb.

JVM堆使用情况

jmap -heap pid

Attaching to process ID 25559, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.45-b08

using thread-local object allocation.

Garbage-First (G1) GC with 23 thread(s)

Heap Configuration:

MinHeapFreeRatio = 40

MaxHeapFreeRatio = 70

MaxHeapSize = 4294967296 (4096.0MB)

NewSize = 1363144 (1.2999954223632812MB)

MaxNewSize = 17592186044415 MB

OldSize = 5452592 (5.1999969482421875MB)

NewRatio = 2

SurvivorRatio = 8

PermSize = 268435456 (256.0MB)

MaxPermSize = 1073741824 (1024.0MB)

G1HeapRegionSize = 2097152 (2.0MB)

Heap Usage:

G1 Heap:

regions =2048

capacity =4294967296 (4096.0MB)

used = 444116448 (423.5424499511719MB)

free = 3850850848 (3672.457550048828MB)

10.340391844511032% used

G1 Young Generation:

Eden Space:

regions = 181

capacity = 2646605824 (2524.0MB)

used = 379584512 (362.0MB)

free = 2267021312 (2162.0MB)

14.342313787638668% used

Survivor Space:

regions = 28

capacity = 58720256 (56.0MB)

used = 58720256 (56.0MB)

free = 0 (0.0MB)

100.0% used

G1 Old Generation:

regions =3

capacity = 1589641216 (1516.0MB)

used = 5811680 (5.542449951171875MB)

free = 1583829536 (1510.4575500488281MB)

0.3655969624783559% used

你可能感兴趣的:(Linux,Java,jvm,java,linux)