前言
在看Btrace源码的时候,了解到一些陌生的启动命令参数,例如-Xbootclasspath等,之前也曾遇到过,但并没有去进一步全面了解,在此则进行介绍。
简介
Java 的启动参数包括标准的参数(运行环境参数)和非标准的参数(JVM实现支持的参数)。
标准的参数
参数 | 描述 |
-client | client模式启动 |
-server | Service模式启动 |
| 加入classpath |
| 加入到system property 中 |
| 启动的操作系统位数 |
| 启动断言 |
| 禁止断言 |
| 启动系统断言 |
| 禁止系统断言 |
-jar | 启动jar |
| 打印载入的class信息 |
-verbose:gc | 打印GC的收集时的信息 |
-verbose:jni | 打印jni调用native的方法行为 |
-version | 打印java的版本信息后退出 |
-showversion | 打印java的版本信息,但不退出 |
| 帮助 |
-X | 打印非标准的参数信息 |
非标准的参数
参数 | 描述 |
-Xint | 设置jvm以解释模式执行,所有字节码解释执行 |
-Xbatch | 关闭后台代码编译。正常情况下,VM会在后台编译代码,运行的方法将以解释的模式运行,知道后台编译完成。该参数则强制编译在前台执行,等所有编译完才能运行代码。 |
-Xdebug | 启动debugger。具体可以参考 jdb description |
| 指定用冒号分割的文件目录、jar或者zip文件,加入到boot class。用来代替java2 SDK中的boot class 文件。常被用来覆盖rt.jar的类。一般情况不会使用。 |
| 和Xbootclasspath 参数用途一样,只是该选项是追加path到bootstrap class path中,而非替换。 |
| 和Xbootclasspath/a 参数用途一样,只是追加的目录将优先于默认的bootstrap class path |
-Xcheck:jni | 在执行native方法前进行检查。JVM会校验传递给jni方法的参数在执行jni请求前。在native中一个非法的数据将会导致JVM终止。如果开启该参数,将会降低性能。 |
-Xfuture | 对class文件进行严格检查。目的为了向后兼容。推荐开发人员使用该参数。 |
-Xnoclassgc | 关闭class 的gc功能 |
-Xincgc | 开启增量gc的功能,默认是关闭的。有助于减少gc的停顿时间,但可能会导致大概10%的性能损耗。 |
| 和verbose:gc参数类似,只是将gc信息打印在文件而不是控制台。和verbose:gc不同的是输出的信息中带有时间。 |
指定初始堆的大小,默认单位为k。可以指定为m | |
| 指定堆得最大的大小 |
| 设置线程栈的大小 |
-Xprof | 跟踪正在运行的程序,并输出跟踪信息到控制台。该参数主要用在开发环境,而不是生产环境。 |
-Xrunhprof [:help ][:<suboption>=<value>,... ] | 开启cpu、heap或者监视器的性能分析。具体介绍,可以参考 java -Xrunhprof:help |
-Xrs | 减少JVM对操作系统信号(signals)的使用。 |
以上参数为1.4.2的基础的,文档地址:
http://docs.oracle.com/javase/1.4.2/docs/tooldocs/solaris/java.html
刚发现了1.6.0的文档地址,对比了下,发现基本参数一样。地址:
http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
关于JVM的其他参数,后续进行补充。