java高*之JVM命令参数大全(标准选项)
这里的选项是被所有的虚拟机实现的选项。
- -agentlib:libname[=options]
加载指定的本地代理库,在库名称之后是用逗号分开的选项,这些选项用来指定那些库可用。
如果-agentlib:foo 这样设置,那么JVM会尝试去加载foo.dll,这个库文件应该在环境变量Path指定的目录下。
下面的例子展示了怎样加载堆分析工具(HPROF)库,每20毫秒获得一次CPU信息,栈深度是3.
-agentlib:hprof=cpu=samples,interval=20,depth=3
下面的例子展示了怎样加载java调试连线协议(JDWP),监听8000端口,在加载main类之前挂起JVM。
-agentlib:jdwp=transport=dt_socket,server=y,address=8000
更多的信息请查看下面的地址:
java.lang.instrument 包: http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html
代理命令行选项:
http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html#starting
- -agentpath:pathname[=options]
加载本地代理库,通过制定一个绝对目录开实现,这个选项和-agentlib相似。不同之处在于指定的是全路径和文件名。
- -client
选择java hotspot 客户端模式,64位版本的JDK已经忽略的此设置,使用服务器模式代替。
默认虚拟机模式,请看下面的地址:
http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
- -Dproperty=value
设置系统属性值,property表示系统变量的名称,value代表变量的值,如果value中间有空格,那么value需要使用引号括起来(比如: -Dfoo=”foo bar”).
- -disableassertions[:[packagename]…|:classname] -da[:[packagename]…|:classname]
使断言失效,默认断言在所有的类中是失效的。
如果没有参数,那么所有的包和类中取消断言。
如果有报名作为参数,且以…结尾,那么在指定的包和子包中去掉断言。如果参数仅仅是…那么表示没有包的类中断言失效。如果是类名做参数,那么就是指定的类中不能使用断言。
-disableassertions (-da)选项适用于所有的类加载器和系统类。有一个例外:如果这个选项没有参数,那么它就不适用于系统类。这就使得取消除系统类之外的类的断言变的简单,
-disablesystemassertions可以使得所有系统类中的断言失效。
可以明确的指出哪些类中可以使用断言,这时就要使用:-enableassertions (-ea)。这两个选项可以同时使用。比如,运行MyClass类 com.wombat.fruitbat包和子包中的类使用断言。
但是类com.wombat.fruitbat.Brickbat取消断言:
java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat MyClass
-disablesystemassertions -dsa
取消所有的系统类断言。
- -enableassertions[:[packagename]…|:classname] -ea[:[packagename]…|:classname]
使断言生效,默认断言在所有的类中是失效的。
如果没有参数,则使所有包和类中的断言生效。
如果包名作为参数,且以…结尾,那么在指定的包和子包中断言 生效。
如果参数仅仅是…那么表示没有包的类中断言生效。
如果是类名做参数,那么就是指定的类中断言生效。
-enableassertions (-ea)选项适用于所有的类加载器和系统类。有一个例外:如果这个选项没有参数,那么它就不适用于系统类。这就使得生效除系统类之外的类的断言变的简单,
-enableassertions可以使得所有系统类中的断言生效。
可以明确的指出哪些类中不可可以使用断言,这时就要使用:-disableassertions (-da)。这两个选项可以同时使用。比如,运行MyClass类 com.wombat.fruitbat包和子包中的类使用断言。
但是类com.wombat.fruitbat.Brickbat取消断言:
java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat MyClass
-enablesystemassertions -esa
使所有系统类中的断言生效。
- -help -?
查看java命令可用的选项,不会启动JVM。
- -jar filename
执行jar包中的程序,filename就是jar包的名称,jar包中有mf文件中指定了主类Main-Class:classname。主类中有 public static void main(String [] args)方法作为开始执行的地方。
当使用-jar选项时,jar包就是所有类的源,其他指定的类路径将会被忽略。
更多的信息,查看下面的地址:
http://docs.oracle.com/javase/8/docs/technotes/tools/windows/jar.html#BGBEJEEG
http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html
http://docs.oracle.com/javase/tutorial/deployment/jar/index.html
- -javaagent:jarpath[=options]
加载特定的代理程序,更多的信息查看下面地址:
http://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html
- -jre-restrict-search
版本搜索时包括用户私有的jre。
- -no-jre-restrict-search
版本搜索时不包括用户私有的jre。
- -server
选择服务器模式运行VM,64位版本的JDK仅仅支持服务器模式,
更多信息查看:http://docs.oracle.com/javase/8/docs/technotes/guides/vm/server-class.html
- -showversion
展示当前JDK的版本信息,然后继续执行应用,和-version类似,只不过后者打印版本信息后直接退出JVM。
- -splash:imgname
启动应用之前,先展示以个图片,比如我们如果要在启动一个应用之前展示一个splash.gif,如下:
-splash:images/splash.gif
- -verbose:class
展示出每一个被加载的类
- -verbose:gc
展示出每一次垃圾回收事件。
- -verbose:jni
展示本地方法的使用,以及本地接口的活动。
- -version
查看jdk版本
- -version:release
指定运行应用时的java版本,比如,要运行一个类或者jar需要JRE 6u13 (1.6.0_13)或者任何JRE 6在6u10 (1.6.0_10)之上的版本,使用下面参数:
-version:"1.6.0_13 1.6* & 1.6.0_10+"