https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
1 内存分配
-Xmx
设置最大堆内存-Xms
设置最小堆内存-Xmn
设置新生代大小 一般设置为整个堆内存的1/4到1/3 会设置相同的-XX:NewSize
和-XX:MaxNewSize
-XX:MaxPermSize
设置永久代大小-Xss
设置线程栈大小-XX:SurvivorRatio
设置eden区和survivor区的比例,默认为8-XX:NewRatio
设置新生代和老年代的比例 老年代/新生代
2 JVM参数
-XX:CompileThreshold
-XX:+HeapDumpOnOutOfMemoryError
发生OOM异常时转存快照文件-XX:HeapDumpPath
设置快照文件的存储路径-XX:+PrintGC
或-verbose:gc
打印GC日志-XX:+PrintGCDetails
打印GC记录,比上面两个命令的信息全面-XX:+PrintTenuringDistribution
对象晋升老年代的实际阈值-XX:MaxTenuringThreshold
设置晋升老年代的最大年龄-XX:PretenureSizeThreshold
设置大对象直接进入老年代的阈值-XX:+PrintHeapAtGC
发生GC时打印详细的堆信息-XX:+PrintGCApplicationStoppedTime
查看应用程序在GC发生时的停顿时间-XX:+PrintGCApplicationConcurrentTime
查看应用程序在GC发生时同步执行的时间-XLoggc:logfile
将GC日志存储到指定的位置 如/usr/local/gc/log/gc.log-XX:+TraceClassLoading
打印类加载的信息-XX:+TraceClassUnloading
打印类卸载的信息-verbose:class
同时打印类加载和卸载的信息-XX:+DisableExplicitGC
禁止在程序中手动触发gc-Xnoclassgc
关闭在GC时对类的回收-Xincgc
启用这个参数会进行增量式GC,通过特定算法使GC线程和应用程序线程交叉执行,从而减小应用程序因GC而产生的停顿时间-XX:+UseLargePages
启用大页-XX:+LargePageSizeInBytes
设置大页的大小-XX:+UseCompressedOops
启用压缩指针 会对Class的属性指针、对象的属性指针、普通对象数组的每个元素指针-XX:+UseSerialGC
指定使用新生代串行收集器和老年代串行收集器-XX:+UseParNewGC
新生代使用并行收集器 老年代串行-XX:+UseParallelGC
新生代使用并行收集器 老年代串行-XX:+UseConcMarkSweepGC
新生代使用并行收集器,老年代使用CMS-XX:ParallelCMSThreads
设置CMS的线程数量 默认为 (ParallelGCThreads+3)/4-XX:CMSInitiatingOccupancyFraction
指定当老年代空间使用率达到多少时进行一次CMS垃圾回收,默认为68-XX:+UseCMSCompactAtFullCollection
可以使CMS在垃圾收集完成后,进行一次内存碎片整理-XX:CMSFullGCsBeforeCompaction
设定进行多少次CMS回收后,进行一次内存压缩-XX:ParallelGCThreads
指定并行收集器工作时的线程数量,当CPU数量小于8时,设置为CPU数量;当CPU数量大于8个时,设置为3+(5*CPU数量)/8-XX:+UseParallelOldGC
新生代和老年代都使用并行回收处理器-XX:MaxGCPauseMillis
设置最大垃圾收集挺短时间-XX:GCTimeRatio
设置吞吐量 0~100的整数 默认值为99-XX:+UseAdaptiveSizePolicy
打开自适应GC策略-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC
启用G1收集器-XX:MaxGCPauseMillis
设置最大垃圾收集停顿时间-XX:GCPauseIntervalMillis
设置停顿间隔时间-XX:MinHeapFreeRatio
设置堆空间最小空闲比例-XX:MaxHeapFreeRatio
设置堆空间最大空闲比例