以-X开头的都是非标准的(这些参数并不能保证在所有的JVM上都被实现),而且如果在新版本有什么改动也不会发布通知.
以-XX开头的都是不稳定的并且不推荐在生产环境中使用。这些参数的改动也不会发布通知。
使用java -XX:+PrintFlagsFinal
查看虚拟机的参数列表和值。参数的使用说明:
- -XX:+option 开启option参数
- -XX:-option 关闭option参数
- -XX:option=value 将option参数设置为value
最常用的几个参数
参数名 | 使用说明 |
---|---|
Xms | 设置 Java 堆的初始化大小 |
Xmx | 设置 Java 堆最大值大小 |
Xss | 设置Java虚拟机栈大小 |
Xmn | 设置年轻代大小 |
-XX:PermSize | 设置持久代(perm gen)初始值 |
-XX:MaxPermSize | 设置持久代最大值 |
内存管理参数
摘自《深入理解java虚拟机》一书,后续多研究研究
参数名 | 默认值 | 使用说明 |
---|---|---|
DisableExplicitGC | 默认关闭 | 忽略来自System.gc()方法触发的垃圾收集 |
ExplicitGCInvokesConcurrent | 默认关闭 | 当收到System.gc()方法提交的垃圾手机申请时,使用CMS收集器进行收集 |
UseSerialGC | Client模式的虚拟机默认开启,其他模式关闭 | 虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old的收集器组合进行内存回收 |
UseParNewGC | 关闭 | 打开此开关,使用ParNew+Serial Old的收集器组合进行内存回收 |
UseConcMarkSweepGC | 关闭 | 打开此开关,使用ParNew+CMS+Serial Old的收集器组合进行内存回收,Serial Old为后备回收器 |
UseParallelGC | Server默认开启,其他关闭 | 打开此开关后,使用Paralell Scavenge+Serial Old的收集器组合进行内存回收 |
UseParallelOldGC | 关闭 | 打开此开关后,使用Parallel Scavenge +Parallel Old的收集器组合进行回收 |
PretenureSizeThreshold | 无 | 直接晋升到老年代对象的大小 |
MaxTenuringThreshold | 15 | 晋升到老年代的对象年龄,一个对象坚持过一次Minor GC之后,年龄加一,到该值后,晋升到老年代 |
UseAdaptiveSizePolicy | 开启 | 动态调整Java堆中各个区域的大小及进入老年代的年龄 |
SurvivorRadio | 默认值为8 | 新生代中Eden区域与Survivor区域的容量比值,新生代由一块Eden与两块Survivor组成。 |
GCTimeRatio | 99 | GC时间比率,只用于Parallel Scavenge,即GC占用CPU:1/(1+99)的时间 |
MaxGCPauseMillis | 无 | 设置GC最大停顿时间,仅在使用Parallel Scavenge时生效 |
CMSInitiatingOccupancyFraction | 68 | 设置CMS收集器在老年代空间被使用多少后触发垃圾回收,仅在使用CMS时生效(可以适当调大) |
UseCMSCompactAtFullCollection | 开启 | 设置CMS收集器在完成垃圾回收后是否要进行一次内存碎片整理,仅在使用CMS时生效 |
CMSFullGCsBeforeCompaction | 无 | 设置CMS收集器在进行若干次垃圾回收后在启动一次内存碎片整理,仅在使用CMS时生效 |
ScavengeBeforeFullGC | 开启 | 在进行Full GC之前进行一次Minor GC |
UseGCOverheadLimit | 开启 | 禁止GC无限制的进行,如果过于频繁就直接发生OutOfMemory |
UseTLAB | server默认开启 | 优先在本地线程缓冲区中分配对象,避免分配内存时的锁定过程 |
MaxHeapFreeRatio | 70 | 当Xmx值比Xms值大时,堆可以动态的收缩和扩展,这个参数控制当堆空间大于指定比率时自动收缩 |
MaxHeapFreeRatio | 40 | 当堆空间小于这个比率时自动扩展 |
调优参数
这里面的部分信息可以直接在JConsole或者VisualVM中查看
参数名 | 默认值 | 使用说明 |
---|---|---|
HeapDumpOnOutOfMemoryError | 关闭 | 在发生内存溢出异常时是否生成堆转储快照,关闭不会生成 |
HeapDumpPath | 无 | 转储文件位置 |
OnOutOfMemoryError | 无 | 在发生内存溢出异常时,执行指定的命令 |
OnError | 无 | 当虚拟机抛出Error异常时,执行指定命令 |
PrintCommandLineFlags | 关闭 | 打印启动虚拟机时输入的非稳定参数 |
PrintCompilation | 关闭 | 打印方法即时编译信息 |
PrintGC | 关闭 | 打印GC信息 |
PrintGCDetails | 关闭 | 打印GC详细信息 |
PrintGCTimeStamps | 关闭 | 打印GC停顿耗时 |
PrintTenuringDistribution | 关闭 | 打印GC后新生代各个年龄对象的大小 |
TraceClassLoading | 关闭 | 打印类加载信息 |
TraceClassUnloading | 关闭 | 打印类卸载信息 |
PrintInlining | 关闭 | 打印方法内联信息 |
PrintAassembly | 关闭 | 打印即时编译后的二进制信息 |
后续在整理下垃圾回收器和一些优化事情。