JVM 常用参数设置(针对 G1GC)
===========================================================
-XX 开头,这些是 JVM 的所有实现 都支持的 最常用的选项。
===========================================================
bool类型的开关选项(+开启、-关闭)
-XX:+UseG1GC
使用G1GC
-XX:+PreserveFramePointer
使用FP寄存器来保存帧指针,而不是作为通用寄存器。解决了stack不完整的问题
-XX:+PrintGC
打印简单GC日志
-XX:+PrintGCDetails
打印详细GC日志
-XX:+PrintGCDateStamps
显示每次GC的日期时间
-XX:+UseGCLogFileRotation
GC日志文件循环使用(比如,5个日志文件循环使用)
-XX:+HeapDumpOnOutOfMemoryError
可以让JVM在出现内存溢出时候Dump出当前的内存转储快照
-XX:-OmitStackTraceInFastThrow
关闭栈异常信息快速抛出,从而记录详细的栈异常以便跟踪。
各种配置的键值
-XX:MetaspaceSize=128m
元空间的初始大小,不断扩容并首次超过这个值时会进行FGC,JVM会动态调整这个值
-XX:MaxMetaspaceSize=256m
元空间的最大值,超过最大值时会抛异常出来,加载的类越多,元空间使用的内存越多,元空间使用 Native Memory。
-XX:MaxGCPauseMillis=200
最大GC暂停时间,用户可以设置这个值,G1GC尽量保证软实时性
-XX:ParallelGCThreads=4
最大并行GC线程数
-XX:ConcGCThreads=4
最大并发GC线程数
-XX:MinHeapFreeRatio=30
指定空闲堆空间的最小百分比,如果实际空闲堆空间小于此值则需要对堆进行扩容 ,Xmx==Xms 的情况下无效
-XX:MaxHeapFreeRatio=50
指定空闲堆空间最大百分比 ,如果实际空闲堆空间大于此值则需要对对堆空间进行缩容,Xmx==Xms 的情况下无效
-XX:CICompilerCount=3
-XX:NumberOfGCLogFiles=5
GC日志文件数,可以设置循环使用
-XX:GCLogFileSize=32M
每个GC日志文件的默认大小
-XX:HeapDumpPath=/opt/logs/appid
堆转储快照文件保存的路径
===========================================================
-X 开头,这些选项是特定于 Java HotSpot 虚拟机的通用选项。
===========================================================
-Xmx6144m
JVM 最大堆内存
-Xms3686m
JVM 初始堆内存
-Xss256k
设置属于每个线程的栈大小
-Xloggc:/opt/logs/appid/gc.log
GC日志文件保存的路径
===========================================================
-D开头,设置系统属性值(属性名称=属性值)
===========================================================
-Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Dport.http.server=8080
-Dport.shutdown.server=8081
-Ddocbase.server=/opt/app
-Dvdir.server=
-Djava.security.egd=file:/dev/./urandom
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.0.1
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8780
-Dcom.sun.management.jmxremote.rmi.port=8780
-Dcom.sun.management.jmxremote.local.only=false
-Djdk.tls.ephemeralDHKeySize=2048
-Dignore.endorsed.dirs=
-Dcatalina.base=/opt/tomcat
-Dcatalina.home=/opt/tomcat
-Djava.io.tmpdir=/opt/tomcat/temp
-Djava.util.concurrent.ForkJoinPool.common.parallelism=4