JVM参数分类
JVM参数分为标准参数和非标准参数:
- 标准参数:
"-"
开头的参数,如-client
,-server
等 - 非标准参数:
"-X"
和"-XX"
开头的参数,如-Xmx
,-XX:+DisableExplicitGC
或者简单分为三类:
"-"
开头的参数 :所有的JVM实现都必须实现这些参数的功能,而且向后兼容;"-X"
开头的参数 :默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;"-XX"
开头的参数 :此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;
jvm常用参数
verbose:gc | 启动jvm的时候,输出jvm里面的gc信息 |
-XX:+PrintGC | 打印的GC信息 |
-XX:+PrintGCDetails | 打印GC的详细信息 |
-XX:+PrintGCTimeStamps | 打印GC发生的时间戳 |
-X:loggc:log/gc.log | 指定输出gc.log的文件位置 |
-XX:+PrintHeapAtGC | 表示每次GC后,都打印堆的信息 |
-XX:+TraceClassLoading | 监控类的加载 |
-XX:+PrintClassHistogram | 跟踪参数 |
-Xmx -Xms | 表示设置堆内存的最大值和最小值 |
-Xmn | 设置新生代的内存大小。 |
-XX:NewRatio | 新生代和老年代的比例。比如:1:4,就是新生代占五分之一。 |
-XX:SurvivorRatio | 设置两个Survivor区和eden区的比例。 比如:2:8 ,就是一个Survivor区占十分之一。 |
XX:+HeapDumpOnOutMemoryError | 发生OOM时,导出堆的信息到文件。 |
-XX:+HeapDumpPath | 表示,导出堆信息的文件路径。 |
-XX:OnOutOfMemoryError | 当系统产生OOM时,执行一个指定的脚本 ,这个脚本可以是任意功能的。 比如生成当前线程的dump文件, 或者是发送邮件和重启系统。 |
-XX:PermSize -XX:MaxPermSize | 设置永久区的内存大小和最大值; 永久区内存用光也会导致OOM的发生。 |
-Xss | 设置栈的大小。栈都是每个线程独有一个, 所有一般都是几百k的大小。 |
-verbose:gc和-XX:+PrintGC区别:
-XX:+PrintGC 与 -verbose:gc 是一样的,可以认为-verbose:gc 是 -XX:+PrintGC的别名.
-XX:+PrintGCDetails 在启动脚本可以自动开启
-XX:+PrintGC , 如果在命令行使用jinfo开启的话,不会自动开启-XX:+PrintGC
垃圾收集器参数的总结
参数 | 描述 |
UserSerialGC | 虚拟机运行在CLient的默认值,打开此开关后使用 Serial +Serail OLd组合进行垃圾回收 |
UseParNewGC | 打开此开关后,使用ParNew +Serial OLd收集器进行回收 |
UseConcMarkSweepGC | 打开此开关后,使用ParNew +CMS+Serial Old收集器进行回收。Serail Old收集器将在CMS收集器出现Concurent Mode Failure失败的备用垃圾收集器 |
UseParallelGC | 打开此开关后,使用Parallel Scavenge +serial Old 组合进行垃圾回收 |
UseParallelOldGC | 打开此开关后,使用Parallel Sacvenge +Parallel Old进行垃圾回收 |
SurvivorRatio | 新生代中的Eden区域和Survivor区域的容量的比值,默认为8,代表Eden:Survivor=8:1 |
PretennureSizeThreshold | 直接晋升到老年代的对象大小,设置了这个参数后,大于这个参数经直接晋升到老年代 |
MaxTenuringThreshold | 晋升到老年代的对象大小,每个对象在经历过一次Minor GC后,年龄就动态加1,当超过这个年龄后,就直接晋升到老年代 |
UseAdaptiveSizePolicy | 动态的调整java堆中各个区域的大小以及进入老年代的年龄 |
HandlerPromotionFailure | 是否允许担保失败,即老年代的剩余空间不足以应对新生代的整个Eden和Survivor区的所有对象都存活的极端情况 |
ParallelGCtThreads | 设置并行GC时进行内存回收的线程数 |
GCTimeRatio | GC时间占总时间的比率,默认值为99,即允许1%的GC时间,尽在使用Parallel Scavenge垃圾收集器时候生效 |
MaxGCPauseMillis | 设置GC的最大停顿时间,进在使用Parallel Scavenge收集器时生效 |
CMSInitiatingOccupancyFraction | 设置CMS收集器在老年代空间被使用多少次后触发垃圾收集,默认值是68%,进在使用CMS收集器时候生效 |
UseCMSCompactAtFullCollection | 设置CMS收集器在完成垃圾收集以后进行一次内存碎片整理。仅仅在使用CMS收集器时候生效 |
CMSFullCsBeforeCompaction | 设置CMS收集器在进行若干次垃圾收集后再启动一次内存碎片整理,仅仅在使用CMS收集器时候生效 |