[参考资料:Oracle Docs](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html)
|命令|示例|解释说明|
|---------------|-------|-------|
|<div style="width: 150pt">-Xms</div>|<div style="width: 170pt">-Xms256m</div>|指定堆内存初始大小。-Xms256m表示设置堆内存初始大小为为256m|
|<div style="width: 150pt">-Xmx</div>|<div style="width: 170pt">-Xmx256m</div>|指定堆内存最大大小。-Xmx256m表示设置堆内存最大大小为为256m|
|<div style="width: 150pt">-XX:+UseTLAB</div>|<div style="width: 170pt"></div>|设定 JVM 是开启 TLAB(Thread Local Allocation Buffer,本地分配缓存),即为每一个线程在堆内存中分配一小块内存,这块内存线程私有|
|<div style="width: 150pt">-XX:SurvivorRatio</div>|<div style="width: 170pt">-XX:SurvivorRatio=6</div>|指定堆内存中Eden区和Survivor0、Survivor1区的比例,默认是8:1:1。-XX:SurvivorRatio=6表示设置该比例为6:2:2|
|<div style="width: 170pt">-XX:MaxTenuringThreshold</div>|<div style="width: 170pt">-XX:MaxTenuringThreshold=20</div>|指定对象从Survivor区进入老年代之前要经历的垃圾回收次数阈值,默认是15次。-XX:MaxTenuringThreshold=20表示一个对象需要经历20次垃圾回收并且未被回收的情况下将其从Survivor区移到老年代|
|<div style="width: 150pt">-XX:+PrintGCDetials</div>|<div style="width: 170pt"></div>|打印程序运行过程中垃圾回收详细信息。|
|<div style="width: 150pt">-XX:CompileThreshold</div>|<div style="width: 170pt">-XX:CompileThreshold=1200</div>|设定方法调用计数器的阈值。它的默认阈值在Client模式下是1500 次,在Server模式下是10000次。超过这个阈值,就会触发JIT编译。|
|<div style="width: 150pt">-XX:-UseCounterDecay</div>||关闭热度衰减,在热点代码统计时,涉及到一个热度衰减机制,该命令可以关闭这个机制|
|<div style="width: 150pt">-XX:CounterHalfLifeTime</div>|<div style="width: 170pt">-XX:CounterHalfLifeTime=100</div>|设定半衰周期的时长,单位是秒。半衰周期是热度衰减机制种的一个参数。|
|<div style="width: 150pt">-Xint</div>|<div style="width: 170pt"></div>|设置jvm完全采用解释器模式执行程序。|
|<div style="width: 150pt">-Xcomp</div>|<div style="width: 170pt"></div>|设置jvm完全采用即时编译器模式执行程序。如果即时编译出现问题,解释器会介入执行。|
|<div style="width: 150pt">-Xmixed</div>|<div style="width: 170pt"></div>|设置jvm完全采用即时编译器和解释器混合模式执行程序。|
|<div style="width: 150pt">-client</div>|<div style="width: 170pt"></div>|指定Java虚拟机运行在client模式下,并使用C1编译器。|
|<div style="width: 150pt">-server</div>|<div style="width: 170pt"></div>|指定Java虚拟机运行在server模式下,并使用C2编译器。|
|<div style="width: 170pt">-XX:StringTableSize</div>|<div style="width: 170pt">-XX:StringTableSize=10000</div>|设置字符串常量池的大小。不同JDK版本中,StringTablesize 的默认值和最小值均不一样|
|<div style="width: 170pt">-XX:+PrintStringTableStatistics</div>|<div style="width: 170pt"></div>|打印字符串常量池统计信息。|
|<div style="width: 210pt">-XX:+HeapDumpOnOutOfMemoryError</div>|<div style="width: 170pt"></div>|设置发生OOM时在当前工作目录下输出dump文件。|
|<div style="width: 170pt">-XX:+PrintCommandLineFlags</div>|<div style="width: 170pt"></div>|打印已设置的JVM命令|
|<div style="width: 170pt">-XX:+UseSerialGC</div>|<div style="width: 170pt"></div>|设置jvm在新生代使用Serial GC,在老年代使用Serial Old GC。|
|<div style="width: 170pt">-XX:+UseParNewGC</div>|<div style="width: 170pt"></div>|设置jvm在新生代使用ParNew GC。|
|<div style="width: 170pt">-XX:ParallelGCThreads</div>|<div style="width: 170pt">-XX:ParallelGCThreads=4</div>|设置jvm在新生代使用并行垃圾收集器的垃圾回收线程数量。一般地,最好与CPU数量相等,以避免过多的线程数影响垃圾收集性能。在默认情况下,当CPU数量小于8个,ParallelGCThreads的值等于CPU数量;当CPU数量大于8个,ParallelGCThreads的值等于3+[5*CPU Count]/8]。-XX:ParallelGCThreads=4表示设置线程数量为4个。|
|<div style="width: 170pt">-XX:+UseConcMarkSweepGC</div>|<div style="width: 170pt"></div>|设置jvm启用CMS GC。|
|<div style="width: 170pt">-XX:+UseParallelGC</div>|<div style="width: 170pt"></div>|手动指定年轻代使用Parallel并行收集器执行内存回收任务。|
|<div style="width: 170pt">-XX:+UseParallelOldGC</div>|<div style="width: 170pt"></div>|手动指定老年代使用Parallel并行收集器执行内存回收任务。|
|<div style="width: 170pt">-XX:MaxGCPauseMillis</div>|<div style="width: 170pt">-XX:MaxGCPauseMillis=100</div>|设置垃圾收集器最大停顿时间(即STW的时间)。单位是毫秒。|
|<div style="width: 170pt">-XX:GCTimeRatio</div>|<div style="width: 170pt">-XX:GCTimeRatio=49</div>|设置垃圾收集时间占总时间的比例,取值范围(0,100),默认值99。-XX:GCTimeRatio=49表示垃圾回收时间占总时间的比例不超过1/(49+1)=2%|
|<div style="width: 170pt">-XX:+UseAdaptiveSizePolicy</div>|<div style="width: 170pt"></div>|设置Parallel Scavenge收集器具有自适应调节策略。|
|<div style="width: 170pt">-XX:+UseConcMarkSweepGC</div>|<div style="width: 170pt"></div>|手动指定使用CMS收集器执行内存回收任务。开启该参数后会自动将-xx:+UseParNewGC打开。即: ParNew (Young区)+CMS (Old区)+Serial Old的组合。|
|<div style="width: 170pt">-XX:CMSInitiatingOccupancyFraction</div>|<div style="width: 170pt">-XX:CMSInitiatingOccupancyFraction=80</div>|设置堆内存使用率的阈值,一旦达到该阈值,便开始进行回收。取值范围为0-100|
|<div style="width: 170pt">-XX:+UseCMSCompactAtFullCollection</div>|<div style="width: 170pt"></div>|用于指定在执行完Full GC后对内存空间进行压缩整理,以此避免内存碎片的产生。|
|<div style="width: 170pt">-XX:CMSFullGCsBeforeCompaction</div>|<div style="width: 170pt">-XX:CMSFullGCsBeforeCompaction=3</div>|设置在执行多少次Full GC后对内存空间进行压缩整理。|
|<div style="width: 170pt">-XX:ParallelCMSThreads</div>|<div style="width: 170pt">-XX:ParallelCMSThreads=2</div>|设置CMS的线程数量。=(CPU数量+3)/4|
|<div style="width: 170pt">-XX:+UseG1GC</div>|<div style="width: 170pt"></div>|手动设置G1垃圾回收器进行垃圾回收。|
|<div style="width: 170pt">-XX:G1HeapRegionSize</div>|<div style="width: 170pt">-XX:G1HeapRegionSize=16</div>|设置每个Region的大小。值是2的幂,范围是1MB到32MB之间,目标是根据最小的Java堆大小划分出约2048个区域。默认是堆内存的1/2000。|
|<div style="width: 170pt">-XX:MaxGCPauseMillis</div>|<div style="width: 170pt">-XX:MaxGCPauseMillis=100 </div>|设置期望达到的最大GC停顿时间指标(JVM会尽力实现,但不保证达到)。默认值是200ms。|
|<div style="width: 170pt">-XX:ParallelGCThread </div>|<div style="width: 170pt">-XX:ParallelGCThread=8 </div>|设置STW工作线程数的值。最多设置为8。|
|<div style="width: 170pt">-XX:ConcGCThreads </div>|<div style="width: 170pt">-XX:ConcGCThreads=2 </div>|设置并发标记的线程数。设置为并行垃圾回收线程(ParallelGCThreads)的1/4左右。|
|<div style="width: 170pt">-XX:InitiatingHeapOccupancyPercent </div>|<div style="width: 170pt">-XX:InitiatingHeapOccupancyPercent=75 </div>|设置触发并发GC周期的Java堆占用率阈值(%)。超过此值,就触发GC。默认值是45。|
|<div style="width: 170pt">-Xloggc:filename</div>|<div style="width: 170pt">-Xloggc:./logs/gc.log</div>|输出程序执行期间gc信息,并指定输出位置(./表示当前项目位置)|

JVM中的命令总汇