选项与默认值 | 说明 |
-XX:-CITime | 打印 JIT 编译(器)花费的时间. (从 1.4.0 开始引入.) |
-XX:ErrorFile=./hs_err_pid<pid>.log | 如果发生错误,将错误数据保存到此文件. (从 6 开始引入.) |
-XX:-ExtendedDTraceProbes | 启用性能影响(performance-impacting) dtrace 探测. (从 6 开始引入. 只适用于 Solaris.) |
-XX:HeapDumpPath=./java_pid<pid>.hprof | 堆转储(heap dump)的文件或目录(Path to directory or filename ). 可动态配置(Manageable). (从 1.4.2 update 12 , 5.0 update 7 开始引入.) |
-XX:-HeapDumpOnOutOfMemoryError | 在抛出 java.lang.OutOfMemoryError 时转储(dump)堆内存到文件中. 可动态配置(Manageable). (从 1.4.2 update 12, 5.0 update 7 开始引入.) |
-XX:OnError="<cmd args>;<cmd args>" | 在致命错误(fatal error)发生时运行用户指定的命令(user-defined commands). (从 1.4.2 update 9 开始引入.) |
-XX:OnOutOfMemoryError="<cmd args>;
<cmd args>" | 在首次抛出 OutOfMemoryError 时运行用户指定的命令(user-defined commands). (从 1.4.2 update 12 , 以及 JDK 6 开始引入) |
-XX:-PrintClassHistogram | 在按下 Ctrl-Break 时打印出类实例直方图(Print a histogram of class instances on Ctrl-Break). 可动态配置(Manageable). (从 1.4.2 开始引入.) 命令 jmap -histo 提供了等价的功能. |
-XX:-PrintConcurrentLocks | 在使用 Ctrl-Break 进行线程转储时(thread dump)打印 java.util.concurrent 锁. 可动态配置(Manageable). (从 JDK6 开始引入.) 命令 jstack -l 提供了等价的功能. |
-XX:-PrintCommandLineFlags | 打印命令行中的参数标志(flags). (从 5.0 开始引入.) |
-XX:-PrintCompilation | 当一个方法被编译时打印消息. |
-XX:-PrintGC | 在GC时打印消息. 可动态配置(Manageable). |
-XX:-PrintGCDetails | 在GC时打印更多细节信息. 可动态配置(Manageable). (从 1.4.0 开始引入.) |
-XX:-PrintGCTimeStamps | 在GC时打印时间戳. 可动态配置(Manageable) (从 1.4.0 开始引入.) |
-XX:-PrintTenuringDistribution | 打印对象生命周期年龄信息(tenuring age information). |
-XX:-PrintAdaptiveSizePolicy | 启用自适应分代大小信息的打印(Enables printing of information about adaptive generation sizing). |
-XX:-TraceClassLoading | 跟踪(Trace)类的加载. |
-XX:-TraceClassLoadingPreorder | 跟踪所有类加载引用顺序(Trace all classes loaded in order referenced) (不是 loaded 状态). (从 1.4.2 开始引入.) |
-XX:-TraceClassResolution | 跟踪常量池解析(Trace constant pool resolutions). (从 1.4.2 开始引入.) |
-XX:-TraceClassUnloading | 跟踪(Trace)类的卸载(unloading). |
-XX:-TraceLoaderConstraints | 跟踪加载器限制记录(Trace recording of loader constraints). (从 Java6 开始引入.) |
-XX:+PerfDataSaveToFile | 在退出时保存 jvmstat 二进制数据. |
-XX:ParallelGCThreads=n | 设置 年轻代与老年代垃圾收集的并行线程数. 各个平台上的JVM默认值会有很大差别. |
-XX:+UseCompressedOops | 启用指针压缩(对象引用使用32位偏移量表示,而不是64位指针),在Java堆内存大小 小于 32gb 时用来对64位JVM进行优化. |
-XX:+AlwaysPreTouch | 在 JVM 初始化期间对Java堆内存进行摸底(Pre-touch). 因此能可以在初始化期间将堆内存的每一页(Every page of the heap)都写0 (demand-zeroed),而不必等到应用程序执行时再慢慢进行. |
-XX:AllocatePrefetchDistance=n | 为对象内存分配(object allocation)设置预取距离(prefetch distance). 即将写入新对象值的内存,会连同最近分配的对象地址后一段距离(单位: 字节 byte)被一起预取到 cache 中. 每个 Java 线程都有自己的分配点(allocation point). 各个平台上的JVM默认值会有很大差别. |
-XX:InlineSmallCode=n | 只有在以前编译好的方法生成的本地机器码数量小于这个值时才会被内联(Inline). 各个平台上的JVM默认值会有很大差别. |
-XX:MaxInlineSize=35 | 一个方法要被内联(inlined),最多允许有多少个字节码(Maximum bytecode size). |
-XX:FreqInlineSize=n | 一个频繁使用的方法(frequently executed method)要被内联(inlined),最多允许有多少个字节码(Maximum bytecode size). 各个平台上的JVM默认值会有很大差别. |
-XX:LoopUnrollLimit=n | 对小于此值的循环体,server模式编译器将其展开(Unroll). server模式编译器根据一个函数计算出限制值,而不是直接使用指定值. 各平台JVM的默认值会有很大差别. |
-XX:InitialTenuringThreshold=7 | 为年轻代收集器(parallel young collector)中的 自适应GC(adaptive GC)设置初始生命周期阀值(initial tenuring threshold). 生命周期阀值是指一个对象被提升到老年代(old, or tenured)之前,在年轻代GC中存活的次数. |
-XX:MaxTenuringThreshold=n | 为自适应GC(adaptive GC sizing)设置对象的最大生命期阀值(tenuring threshold) . 当前允许的最大值是 15. 并行垃圾收集器(parallel collector)的默认值为 15, CMS 默认值为 4 . |
-Xloggc:<filename> | 记录 GC verbose 日志输出到指定的文件. verbose 输出由正常的 verbose GC flags 控制. |
-XX:-UseGCLogFileRotation | 启用 GC 日志轮换(rotation), 要求设置了 -Xloggc. |
-XX:NumberOfGClogFiles=1 | 设置日志轮换(rotating)的文件数量, 必须大于等于(>= 1). 轮换日志文件会使用如下命名规则(naming scheme), <filename>.0, <filename>.1, ..., <filename>.n-1. |
-XX:GCLogFileSize=8K | 单个日志文件的大小,大于这个值则进行日志切换(rotated), 必须大于等于(>= 8K). |