1、参数查看
参数 | 功能 |
---|---|
-XX:+PrintFlagsInitial | 查看所有的参数默认值 |
-XX:+PrintFlagsFinal | 查看所有参数的最终值(可查看修改过后的值) |
2、内存设置
参数 | 功能 |
---|---|
-Xms600m | 设置堆空间初始值为600m(默认为本机物理内存的1/64) |
-Xmx600m | 设置堆空间最大值为600m(默认为本机物理内存的1/4) |
-Xmn600m | 直接设置新生代的大小。优先于参数-XX:NewRatio(初始值和最大值) |
-XX:NewRatio=2 | 设置堆空间中年轻代与老年代的比例为 1:2(默认也是1:2) |
-XX:SurvivorRatio=8 | 设置年轻代中Eden与s0、s1区的比例为8:1:1 |
-XX:StringTableSize=2000 | 设置字符串常量池长度为1000(jdk1.8开始要求设置的值最小为1009) |
3、关于打印信息
参数 | 功能 |
---|---|
-XX:+PrintGCDetails | 打印详细的GC处理日志 |
-XX:+PrintStringTableStatistics | 打印打印字符串常量池日志 |
-XX:+HeapDumpOnOutOfMemoryError | 每当出现OOM时都会生成堆空间的dump文件 |
-XX:+PrintCommandLineFlags | 产看JVM默认的垃圾回收器 |
-Xloggc:./logs/gc.log | 日志文件的输出路径(在需要在项目路径下新建文件夹logs) |
4、阈值设定
参数 | 功能 |
---|---|
-XX:MaxTenuringThreshold=15 | 设置新生代阈值为15(默认15) |
5、空间担保
参数 | 功能 |
---|---|
-XX:(+/-)HandlePromotionFailure | 是否设置空间担保(默认开启) |
6、设置程序执行模式
参数 | 功能 |
---|---|
-Xint | 完全采用解释器执行程序 |
-Xcomp | 完全采用编译器执行程序 |
-Xmixed | 采用混合模式(解释器+编译器)执行 |
7、设置使用的垃圾回收器
参数 | 功能 | 垃圾回收器特点 |
---|---|---|
-XX:+UserSerialGC | 新生代使用Serial GC; 老年代使用Serial Old GC | 串行垃圾回收器 |
-XX:+UserParNewGC | 新生代使用ParNewGC | 并行垃圾回收器 |
-XX:+UserConcMarkSweepGC | 老年代使用CMS GC(同时年轻代出发使用ParNewGC) | 并发垃圾回收器 |
-XX:ParallelGCThreads | 设制GC线程数量,默认开启和CPU数量或者与CPU核心数量相同的,以达到回收线程并行的目的 | |
-XX:+UseParallelGC | 年轻代使用Parallel GC(JDK1.8默认使用,且配合Parallel Old GC使用,开启此参数后老年代自动使用Parallel Old GC) | 并行垃圾回收器 |
-XX:+UseParallelOldGC | 老年代使用ParallelOld GC(和Parallel GC互相激活) | 并行回收器 |
-XX:+UseG1GC | 使用G1垃圾收集器 |
8、设置和垃圾收集器相关的参数
参数 | 功能 | 备注 |
---|---|---|
-XX:MaxGCPauseMillis | 设置垃圾收集器最大停顿时间;单位毫秒(此参数慎用) | 此参数与下面的比例参数有矛盾,停顿时间越短,总的垃圾收集时间就越长。 |
-XX:GCTimeRatio | 设置垃圾收集器的垃圾收集时间占总时间的比例<=(1/N+1) | N的取值范围(0,99),默认99 |
9、开启自适应调节策略
参数 | 功能 | 备注 |
---|---|---|
-XX:+UseAdaptiveSizePolicy | 开启自适应调节策略(默认开启) |
➢在这种模式下,年轻代的大小、Eden和Survivor的比例、 晋升老年代的对象年龄等参数会被自动调整,已达到在堆大小、吞吐量和停顿时间之间的平衡点。
➢在手动调优比较困难的场合,可以直接使用这种自适应的方式,仅指定虚拟机的最大堆、目标的吞吐量(GCTimeRatio)和停顿时间(MaxGCPauseMills),让虚拟机自己完成调优工作。
10、G1回收器的参数设置
参数 | 功能 |
---|---|
-XX:+UseG1GC | 手动指定使用G1收集器执行内存回收任务 |
-XX:G1HeapRegionSize | 设置每个Region的大小。值是2的幂,范围是1MB到32MB之间,目标是根据最小的Java堆大小划分出约2048个区域。默认是堆内存的1 /2000. |
-XX:MaxGCPauseMillis | 设置期望达到的最大GC停顿时间指标(JVM会尽力实现,但不保证达到)。默认值是200ms; |
-XX: ParallelGCThread | 设置STW时GC线程数的值。最多设置为8 |
-XX: ConcGCThreads | 设置并发标记的线程数。将n设置为并行垃圾回收线程数(ParallelGCThreads)的1/4左右。 |
-XX:InitiatingHeapOccupancyPercent | 设置触发并发GC周期的Java堆占用率阈值。超过此值,就触发GC。默认值是45。 |