启动参数 | 含义 |
---|---|
-Xms | 设置堆内存的最小值 |
-Xmx | 设置堆内存的最大值 |
-Xmn | 设置新生代内存大小 |
-Xss | 设置栈容量 |
-Xoss | 设置本地方法栈大小 |
-XX:+/-UseTLAB | 虚拟机是否使用TLAB(本地线程分配缓冲) |
-XX:SurvivorRatio | 新生代中Eden区域与Survivor区域的容量比值,默认为8,代表Eden:Survivor = 8 :1 |
+XX:CompactFields | true/false(默认为true)子类之中较窄的变量是否允许插入父类变量的空隙之中 |
-XX:PermSize | 设置永久代初始内存大小 |
-XX:MaxPermSize | 设置永久代最大内存大小 |
-XX:+PrintGCDetails | 查看GC详细信息 |
-XX:MetaspaceSize | 指定元空间的初始空间大小,以字节为单位,达到该值就会触发垃圾收集进行类型卸载,同时收集器会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过-XX:MaxMetaspaceSize(如果设置了的话)的情况下,适当提高该值。 |
-XX:MaxMetaspaceSize | 设置元空间最大值,默认是-1,即不限制,或者说只受限于本地内存大小。 |
-XX:MinMetaspaceFreeRatio | 作用是在垃圾收集之后控制最小的元空间剩余容量的百分比,可减少因为元空间不足导致的垃圾收集的频率。 |
-XX:MaxMetaspaceFreeRatio | 用于控制最大的元空间剩余容量的百分比。 |
-XX:FieldsAllocationStyle | 设置虚拟机存储实例数据顺序分配策略 |
-XX:+HeapDumpOnOutOfMemoryError | 当虚拟机出现内存溢出异常时Dump当前的内存堆转储快照 |
-XX:MaxDirectMemorySize | 设置直接内存的最大值 |
-XX:+TraceClassLoading | 跟踪类的加载情况 |
-XX:+TraceClassUnLoading | 跟踪类的卸载情况 |
-XX:+UseCondCardMark | 是否开启卡表更新的条件判断 |
-XX:PretenureSizeThreshold | 直接晋升到老年代的对象大小,设置这个参数后,大于这个参数的对象将直接在老年代分配。该参数只对Serial和ParNew两款新生代收集器有效,HotSpot的其他新生代收集器,如Parallel Scavenge并不支持这个参数。 |
-XX:HandlePromotionFailure | 是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden和Survivor区的所有对象都存活的极端情况 |
-XX:+/-UseConcMarkSweepGC | 打开此开关后,使用ParNew + CMS + Serial Old的收集器组合进行内存回收。Serial Old收集器将作为CMS收集器出现“Concurrent Mode Failure”失败后的后备收集器使用 |
-XX:+/-UseParNewGC | 打开此开关后,使用ParNew + Serial Old的收集器组合进行内存回收,在JDK9后不再支持 |
-XX:ParallelGCThreads | 用户线程冻结期间并行执行的收集器线程数 |
-XX:MaxGCPauseMillis | 设置GC的最大停顿时间。仅在使用Parallel Scavenge收集器时生效 |
-XX:GCTimeRatio | GC时间占总时间的比率,默认值为99,即允许1%的GC时间。仅在使用Parallel Scavenge收集器时生效 |
-XX:+UserAdaptiveSizePolicy | 开启垃圾收集器的自适应调节策略,动态调整Java堆中各个区域的大小以及进入老年代的年龄 |
-XX:CMSInitiatingOccupancyFraction | 设置CMS收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%,仅在使用CMS收集器时生效 |
-XX:+UseCMSCompactAtFullCollection | 设置CMS收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用CMS收集器时生效,此参数从JDK9开始废弃 |
-XX:CMSFullGCsBeforeCompaction | 设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理。仅在使用CMS收集器时生效,此参数从JDK9开始废弃 |
-XX:G1HeapRegionSize | 设置Region大小,并非最终值 |
-XX:+PrintGC | 查看GC基本信息 |
-XX:+PrintHeapAtGC | 查看GC前后的堆、方法区可用容量变化 |
-XX:+PrintGCApplicationConcurrentTime | 查看GC过程中用户线程并发时间以及停顿的时间 |
-XX:+PrintAdaptiveSizePolicy | 查看收集器Ergonomics机制(自动设置堆空间各分代区域大小、收集目标等内容,从Parallel收集器开始支持)自动调节的相关信息 |
-XX:+PrintTenuringDistribution | 查看熬过收集后剩余对象的年龄分布信息 |
-XX: +/-UseSerialGC | 虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old的收集器组合进行内存回收 |
-XX:+/-UseParallelGC | JDK9之前虚拟机运行在Server模式下的默认值,打开此开关后,使用Parallel Scavenge + Serial Old(PS MarkSweep)的收集器组合进行内存回收 |
-XX:+/-UseParallelOldGC | 打开此开关后,使用Parallel Scavenge +Parallel Old的收集器组合进行内存回收 |
-XX:MaxTenuringThreshold | 晋升到老年代的对象年龄。每个对象在坚持过一次Minor GC之后,年龄就增加1,当超过这个参数值时就进入老年代 |
-XX:+UseG1GC | 使用G1收集器,这个是JDK 9后的Server模式默认值 |
-XX:G1HeapRegionSize=n | 设置Region大小,并非最终值 |
XX:MaxGCPauseMillis | 设置G1收集过程目标时间,默认值是200ms,不是硬性条件 |
-XX:G1NewSizePercent | 新生代最小值,默认值是5% |
-XX:G1MaxNewSizePercent | 新生代最大值,默认值是60% |
-XX:ConcGCThreads=n | 并发标记、并发整理的执行线程数,对不同的收集器,根据其能够并发的阶段,有不同的含义 |
-XX:InitiatingHeapOccupancyPercent | 设置触发标记周期的Java堆占用率阈值。默认值是45%,这里的java堆占比指的是non_young_capacity_bytes,包括old+humongous |
-XX:+UseShenandoahGC | 使用Shenandoah收集器。这个选项在OracleJDK中不被支持,只能在OpenJDK 12或者某些支持Shenandoah的Backport发型版本使用。目前仍然要配合-XX:+UnlockExperimentalVMOptions使用 |
-XX:ShenandoahGCHeuristics | Shenandoah何时启动一次GC过程,其可选值有adaptive、static、static、compact、passive、aggressive |
-XX:+UseZGC | 使用ZGC收集器,目前仍然要配合-XX:+UnlockExperimentalVMOptions使用 |
-XX:+UseNUMA | 启用NUMA内存分配支持,目前只有Parallel和ZGC支持,以后G1收集器可能也会支持该选项 |
-XX:+PrintFlagsFinal | 查看参数默认值 |
-XX:+HeapDumpOnCtrlBreak | 可以使用[Ctrl]+[Break]键让虚拟机生成堆转储快照文件 |
-verbose:gc | 在控制台输出gc情况,打印GC信息,输出内容已被-XX:+PrintGCDetails参数包括,可以不写 |
-Xcomp | 让虚拟机以编译模式执行代码,这样不需要执行足够次数来预热就能触发即时编译 |
-XX:+UnlockDiagnosticVMOptions | |
-XX:+LogCompilation | |
-XX:+LogFile | |
-XX:+DisableExplicitGC | 禁止人工触发垃圾收集 |
-XX:+Always-Tenure | |
-XX:+PrintGCApplicationStoppedTime | |
-XX:+PrintGCDate-Stamps | |
-Xloggc:gclog.log | |
-XX:+PrintReferenceGC | 跟踪软引用、弱引用、虚引用和Finallize队列 |
-XX:PrintSafepointStatisticsCount | |
-XX:+SafepointTimeout | |
-XX:SafepointTimeoutDelay | |
-Xverify:none | 禁止类加载时字节码验证过程 |
-Xint | 禁止编译期运作 |
-XX:+PrintGCTimeStamps | 打印GC停顿时间 |
-XX:+DisableExplicitGC | 屏蔽掉System.gc() |
-XX:+UseSpinnig | 开启自旋锁,自旋锁在JDK 1.4.2中就已经引入,只不过默认是关闭的 ,在JDK 1.6中就已经改为默认开启了 |
-XX:+PreBlockSpin | 控制多线程自旋锁优化的自旋次数,-XX:+UseSpinning必须先启用,对于jdk6来说已经默认启用了,默认自旋10次 |
-XX:+DoEscapeAnalysis | |
-XX:+EliminateLocks |
参考:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) 周志明