| -Xmx4G | 设置堆的最大内存大小为4GB,也可通过-XX:MaxHeapSize=4GB进行设置 | 
| -Xms256m | 设置堆的初始内存大小为256兆,如果未设置此选项,则初始大小将设置为新生代和年老代分配的内存大小总和,也可通过-XX:InitialHeapSize=256m进行设置 | 
| -Xmn256m | 设置新生代的初始内存大小和最大内存大小为256兆,也可通过-XX:NewSize=256m设置新生代初始内存大小、-XX:MaxNewSize=256m设置新生代最大内存大小 | 
| -Xss256k | 设置每个线程的堆栈大小为256KB,也可通过-XX:ThreadStackSize=256k进行设置。默认值与运行环境有关,64位linux系统中默认值为1024KB | 
| -XX:MetaspaceSize=256m | 
 设置元空间扩容时触发垃圾回收的阈值,即随着Metaspace的不断扩容,达到该值时触发一次FGC。 Metaspace的初始容量一定是21807104(约20.8m)和MetaspaceSize及MaxMetaspaceSize设置的值无关,所以扩容区间是[20.8m, MaxMetaspaceSize)  | 
| -XX:MaxMetaspaceSize=256m | 设置元空间的最大本机内存为256兆 | 
| -XX:NewRatio=1 | 设置年老代和新生代占用的内存空间的比值,即old/new=1,默认值是2 | 
| -XX:NewSize=256m | 设置新生代的初始内存大小为256兆 | 
| -XX:SurvivorRatio=4 | 设置Eden区和Survivor大小比值,即Eden/Survivor=4,该设置表明每个Survivor区在新生代中占1/6的空间,该设置默认值为8 | 
| -XX:MaxTenuringThreshold=20 | 设置进入老年代的门槛,即对象在Survivor区之间拷贝了20次则将该对象复制到老年代 | 
| -XX:MaxNewSize=256m | 设置新生代的最大内存大小为256兆 | 
| -XX:InitialHeapSize=256m | 设置堆的初始内存大小为256兆 | 
| -XX:MaxHeapSize=4GB | 设置堆的最大内存大小为4GB | 
| -XX:PermSize=256m | 设置分配给永久代的空间(以字节为单位),如果超出则会触发垃圾回收。此选项在JDK 8中已弃用,并被该-XX:MetaspaceSize选项取代(原因是jdk1.8已经将永久代移到了本地内存中,称为MetaSpace) | 
| -XX:MaxPermSize=256m | 设置最大永久生成空间大小(以字节为单位)。此选项在JDK 8中已弃用,并由该-XX:MaxMetaspaceSize选项取代。 | 
| -XX:MaxGCPauseMillis=500 | 设置一次GC过程大的暂停时间,单位是毫秒 | 
| -XX:+UseSerialGC | 使用串行垃圾收集器,默认情况下,禁用此选项,并根据计算机的配置和JVM的类型自动选择收集器 | 
| -XX:+UseParallelGC | 开启并行垃圾收集器(也称为吞吐量收集器),对新生代有效,老年代依然是串行垃圾收集器 | 
| -XX:+UseParNewGC | 对新生代使用并行线程进行垃圾回收,设置-XX:+UseConcMarkSweepGC选项时会自动启用该选项 | 
| -XX:+UseParallelOldGC | 对老年代使用并行垃圾收集器,开启此选项时-XX:+UseParallelGC会自动被开启 | 
| -XX:+UseConcMarkSweepGC | 开启并发标记清除垃圾收集器,并自动开启-XX:+UseParNewGC且无法禁用 | 
| -XX:ParallelGCThreads=2 | 设置新生代和老年代中并行垃圾收集器开启的线程数,默认值是系统可用CPU的数量 | 
| -XX:+PrintGC | 允许打印GC信息 | 
| -XX:+PrintGCDetails | 允许打印GX详细信息 | 
| -XX:+PrintGCDateStamps | 允许打印GC日期戳 | 
| -XX:+PrintGCTimeStamps | 允许打印GC时间戳 | 
| -Xloggc:filename | gc日志输出到指定文件 | 
oracle官方文档表示,在以下配置的计算机上,默认情况下选择吞吐量垃圾收集器;初始堆大小为1/64的物理内存,最大为1GB;最大堆大小为1/4物理内存,最大为1GB:
①.2个以上处理器
②.2GB以上的物理内存
分析工具
jmap -heap pid
查看指定java进程的jvm参数和当前堆内各个区的内存使用情况(pid表示进程id)
jstack pid
查看指定java进程的栈内日志,主要用于分析线程的运行状况
jstat -gc pid 1000
每隔一秒统计一次gc的回收情况
原文:https://www.cnblogs.com/xiao-tao/p/10238534.html