JVM学习系列(五) 常见的JVM参数
参数 | 说明 | 实例 |
---|---|---|
-Xms | 初始堆大小,默认物理内存的1/64 | -Xms512M |
-Xmx | 最大堆大小,默认物理内存的1/4 | -Xms2G |
-Xmn | 新生代内存大小,官方推荐为整个堆的3/8 | -Xmn512M |
-Xss | 线程堆栈大小,jdk1.5及之后默认1M,之前默认256k | -Xss512k |
-XX:NewRatio=n | 设置新生代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 | -XX:NewRatio=3 |
-XX:SurvivorRatio=n | 年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:1:1,一个Survivor区占整个年轻代的1/8 | -XX:SurvivorRatio=8 |
-XX:PermSize=n | 永久代初始值,默认为物理内存的1/64 | -XX:PermSize=128M |
-XX:MaxPermSize=n | 永久代最大值,默认为物理内存的1/4 | -XX:MaxPermSize=256M |
-verbose:class | 在控制台打印类加载信息 | |
-verbose:gc | 在控制台打印垃圾回收日志 | |
-XX:+PrintGC | 打印GC日志,内容简单 | |
-XX:+PrintGCDetails | 打印GC日志,内容详细 | |
-XX:+PrintGCDateStamps | 在GC日志中添加时间戳 | |
-Xloggc:filename | 指定gc日志路径 | -Xloggc:/data/jvm/gc.log |
-XX:+UseSerialGC | 年轻代设置串行收集器Serial | |
-XX:+UseParallelGC | 年轻代设置并行收集器Parallel Scavenge | |
-XX:ParallelGCThreads=n | 设置Parallel Scavenge收集时使用的CPU数。并行收集线程数。 | -XX:ParallelGCThreads=4 |
-XX:MaxGCPauseMillis=n | 设置Parallel Scavenge回收的最大时间(毫秒) | -XX:MaxGCPauseMillis=100 |
-XX:GCTimeRatio=n | 设置Parallel Scavenge垃圾回收时间占程序运行时间的百分比。公式为1/(1+n) | -XX:GCTimeRatio=19 |
-XX:+UseParallelOldGC | 设置老年代为并行收集器ParallelOld收集器 | |
-XX:+UseConcMarkSweepGC | 设置老年代并发收集器CMS | |
-XX:+CMSIncrementalMode | 设置CMS收集器为增量模式,适用于单CPU情况。 |
垃圾收集器相关的参数
参数 | 说明 | 实例 |
---|---|---|
UseSerialGC | 虚拟机运行在Client模式下的默认值,打开这个开关后,使用Serial+Serial Old收集器组合进行内存回收 | |
UseParNewGC | 打开这个开关后,使用ParNew+Serial Old收集器组合进行收集 | |
UseConcMarkSweepGC | 打开这个开关后,使用ParNew+CMS+Serial Old 的收集器组合进行垃圾回收,Serial Old 收集器做为CMS 收集器出现Concurrent Mode Failure的失败的后背收集器使用 | |
UseParallelGC | 虚拟机运行在Server模式下的默认值,打开这个卡管后,使用Parallel Scavenge+Serial Old 收集器组合进行垃圾回收 | |
UseParallelOldGC | 打开这个开关后,使用Parallel Scavenge+Parallel Old的收集器组合来进行垃圾回收 | |
SurvivorRatio | 新生代中Eden区和Survivor区的内存占比,默认是8,代表Eden:Survivor=8:1 | |
PretenureSizeThrehold | 直接晋升到老年代的对象大小,设置这个参数后,大于这个参数的对象直接在老年代分配 | |
MaxTenuringThreshold | 晋升到老年代的对象年龄,每个对象在minor gc之后,年龄+1,当大于这个年龄后,进入老年代 | |
UseAdaptiveSizePolicy | 动态调整JAVA堆中各个区域的大小以及进入老年代的年龄 | |
HandlePromotionFailure | 是否允许分配担保失败,即老年代的剩余空间不足以应对新生代的整个Eden和Survivor区的所有对象都存活的极端情况 | |
ParallelGCThreads | 设置并发GC时进行内存回收的线程数 | |
GCTimeRatio | GC时间占总时间的比例,默认99,即允许1%的GC时间,仅在使用Parallel Scavenge收集器使用 | |
MaxGCPauseMillis | 设置GC最大的亭短时间,仅在使用Parallel Scavenge收集器时生效 | |
CMSInitialtingOccupancyFraction | 设置CMS收集器在老年代空间被多少使用后出发垃圾收集,默认是68%,仅在使用CMS收集器时生效 | |
UseCMSCompactAtFullCollection | 设置CMS收集器在垃圾收集完成后是否进行一次内存碎片整理,仅在使用CMS收集时生效 | |
CMSFullGCsBeforeCompaction | 设置CMS收集器在进行若干次垃圾回收时再启动一次内存碎片整理,仅在CMS收集器时生效 |