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