是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢
-Xms7168m
是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常
-Xmx7168m
设置年轻代大小。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
-Xmn2389m
设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6
-XX:SurvivorRatio=4
设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
-XX:GCTimeRatio=19
设置并行收集器收集时使用的CPU数。并行收集线程数
-XX:ParallelGCThreads=10
这个参数作用是禁止代码中显示调用GC。代码如何显示调用GC呢,通过System.gc()函数调用。如果加上了这个JVM启动参数,那么代码中调用System.gc()没有任何效果,相当于是没有这行代码一样
-XX:+DisableExplicitGC
这个是原始类型的JAVA自带的快速优化
-XX:+UseFastAccessorMethods
用于设置metaspace区域的最大值,这个值可以通过mxbean中的MemoryPoolBean获取到,如果这个参数没有设置,那么就是通过mxbean拿到的最大值是-1,表示无穷大
-XX:MaxMetaspaceSize=4096m
Metaspace扩容时触发FullGC的初始化阈值,也是最小的阈值,如果没有配置,触发FGC的阈值是21807104(约20.8m)
GC收集器会在发生对metaspace的回收会,会计算新的_capacity_until_GC值,以后发生FGC就跟MetaspaceSize没有关系了
-XX:MetaspaceSize=512m
关闭虚拟机对class的垃圾回收功能
-Xnoclassgc
并行处理Reference,加快处理速度,缩短耗时,默认false
-XX:+ParallelRefProcEnabled
设置年老代为并发收集,使用CMS内存收集
-XX:+UseConcMarkSweepGC
设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值
-XX:+UseParNewGC
降低标记停顿
-XX:+CMSParallelRemarkEnabled
使用手动定义初始化定义开始CMS收集
-XX:+UseCMSInitiatingOccupancyOnly
使用cms作为垃圾回收,使用70%后开始CMS收集
-XX:CMSInitiatingOccupancyFraction=70
启用CMSClassUnloadingEnabled,GC也会扫描PermGen,并删除不再使用的类
-XX:+CMSClassUnloadingEnabled
针对SoftRefLRUPolicyMSPerMB的生产问题https://blog.csdn.net/qiang_zi_/article/details/100700784
反射过程中JVM自动创建的软引用的一些类的Class对象的回收时间,0代表每次FGC都会回收
-XX:SoftRefLRUPolicyMSPerMB=0
输出简要GC日志
-XX:+PrintGC
开启记录GC日志
-XX:+UseGCLogFileRotation
GC日志最大有5个日志
-XX:NumberOfGCLogFiles=5
每个日志256M
-XX:GCLogFileSize=256M
打印GC详细日志信息
-XX:+PrintGCDetails
GC 日志的前面加上一个时间戳。这个时间戳表示 JVM 启动后到现在所逝去的时间
-XX:+PrintGCTimeStamps
打印GC前后的详细堆栈信息
-XX:+PrintHeapAtGC
可以打印出类的加载顺序,可以用来排查 class 的冲突问题
-XX:TraceClassLoading
可以打印出类的卸载顺序,可以用来排查 class 的冲突问题
-XX:TraceClassUnloading