基于jdk8的参数
标准:- 开头,所有的HotSpot都支持
非标准:-X 开头,特定版本HotSpot支持特定命令,每个JVM实现不同
不稳定:-XX 开头,下个版本可能取消
标准命令,比如
java -version
非标准,用命令 java -X 查看
java -X-Xmixed 混合模式执行 (默认)-Xint 仅解释模式执行-Xbootclasspath:<用 : 分隔的目录和 zip/jar 文件>设置搜索路径以引导类和资源-Xbootclasspath/a:<用 : 分隔的目录和 zip/jar 文件>附加在引导类路径末尾-Xbootclasspath/p:<用 : 分隔的目录和 zip/jar 文件>置于引导类路径之前-Xdiag 显示附加诊断消息-Xnoclassgc 禁用类垃圾收集-Xincgc 启用增量垃圾收集-Xloggc:<file> 将 GC 状态记录在文件中 (带时间戳)-Xbatch 禁用后台编译-Xms<size> 设置初始 Java 堆大小-Xmx<size> 设置最大 Java 堆大小-Xss<size> 设置 Java 线程堆栈大小-Xprof 输出 cpu 配置文件数据-Xfuture 启用最严格的检查, 预期将来的默认值-Xrs 减少 Java/VM 对操作系统信号的使用 (请参阅文档)-Xcheck:jni 对 JNI 函数执行其他检查-Xshare:off 不尝试使用共享类数据-Xshare:auto 在可能的情况下使用共享类数据 (默认)-Xshare:on 要求使用共享类数据, 否则将失败。-XshowSettings 显示所有设置并继续-XshowSettings:all显示所有设置并继续-XshowSettings:vm 显示所有与 vm 相关的设置并继续-XshowSettings:properties显示所有属性设置并继续-XshowSettings:locale显示所有与区域设置相关的设置并继续-X 选项是非标准选项, 如有更改, 恕不另行通知。以下选项为 Mac OS X 特定的选项:-XstartOnFirstThread在第一个 (AppKit) 线程上运行 main() 方法-Xdock:name=<应用程序名称>"覆盖停靠栏中显示的默认应用程序名称-Xdock:icon=<图标文件的路径>覆盖停靠栏中显示的默认图标
不稳定:-XX 开头,有好几百个参数,没有找到完整列表
常用的参数:
-XX:+PrintFlagsFinal,设置值,最终生效值
java -XX:+PrintFlagsFinal
[Global flags]intx ActiveProcessorCount = -1 {product}uintx AdaptiveSizeDecrementScaleFactor = 4 {product}uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product}uintx AdaptiveSizePausePolicy = 0 {product}uintx AdaptiveSizePolicyCollectionCostMargin = 50 {product}
看有没有用 G1 作为垃圾收集器,false表示没有
java -XX:+PrintFlagsFinal | grep UseG1GCbool UseG1GC = false {product}
看有没有用 Serial 作为垃圾收集器,true 表示有
java -XX:+PrintFlagsFinal | grep UseSerialGCbool UseSerialGC = true {product}
把垃圾收集器改为 G1
java -XX:+UseG1GC
-XX:+PrintFlagsInitial,默认值
-XX:+PrintCommandLineFlags,命令行参数
java -XX:+PrintCommandLineFlags
-XX:InitialHeapSize=30115712 -XX:MaxHeapSize=481851392 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseSerialGC