Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令 JAVA_HOME"bin"java –option 来启动,-option为虚拟机参数,JAVA_HOME为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对虚拟机的运行 模式有更深入理解。
  一、查看参数列表:

  虚拟机参数分为基本和扩展两类,在命令行中输入JAVA_HOME"bin"java 就可得到基本参数列表,

  在命令行输入JAVA_HOME"bin"java –X 就可得到扩展参数列表。
  二、基本参数说明:

  1. -client,-server

  这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。相反,server模式启动比client慢,但可获得更高的运行性能。

  在windows上,缺省的虚拟机类型为client模式,如果要使用
server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。在
Linux,Solaris上缺省采用server模式。

  2. -hotspot

  含义与client相同,jdk1.4以前使用的参数,jdk1.4开始不再使用,代之以client。

  3. -classpath,-cp

  虚拟机在运行一个类时,需要将其装入内存,虚拟机搜索类的方式和顺序如下:

  Bootstrap classes,Extension classes,User classes。

  Bootstrap 中的路径是虚拟机自带的jar或zip文件,虚拟机首先搜索这些包文件,用System.getProperty("sun.boot.class.path")可得到虚拟机搜索的包名。

  Extension是位于jre"lib"ext目录下的jar文件,虚拟机在搜索完Bootstrap后就搜索该目录下的jar文件。用System. getProperty("java.ext.dirs”)可得到虚拟机使用Extension搜索路径。

  User classes搜索顺序为当前目录、环境变量 CLASSPATH、-classpath。

  4. -classpath

  告知虚拟机搜索目录名、jar文档名、zip文档名,之间用分号;分隔。

  例如当你自己开发了公共类并包装成一个common.jar包,在使用 common.jar中的类时,就需要用-classpath
common.jar
告诉虚拟机从common.jar中查找该类,否则虚拟机就会抛出java.lang.NoClassDefFoundError异常,表明未找到类定
义。

  在运行时可用System.getProperty(“java.class.path”)得到虚拟机查找类的路径。

  使用-classpath后虚拟机将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则虚拟机使用当前路径(.)作为类搜索路径。

  推荐使用-classpath来定义虚拟机要搜索的类路径,而不要使用环境变量
CLASSPATH的搜索路径,以减少多个项目同时使用CLASSPATH时存在的潜在冲突。例如应用1要使用a1.0.jar中的类G,应用2要使用
a2.0.jar中的类G,a2.0.jar是a1.0.jar的升级包,当a1.0.jar,a2.0.jar都在CLASSPATH中,虚拟机搜索到
第一个包中的类G时就停止搜索,如果应用1应用2的虚拟机都从CLASSPATH中搜索,就会有一个应用得不到正确版本的类G。

  5.-D<propertyName>=value

  在虚拟机的系统属性中设置属性名/值对,运行在此虚拟机之上的应用程序可用System.getProperty(“propertyName”)得到value的值。

  如果value中有空格,则需要用双引号将该值括起来,如-Dname=”space string”。

该参数通常用于设置系统级全局变量值,如配置文件路径,应为该属性在程序中任何地方都可访问。

  6. -verbose[:class|gc|jni]

  在输出设备上显示虚拟机运行信息。

  verbose和verbose:class含义相同,输出虚拟机装入的类的信息,显示的信息格式如下:

  [Loaded java.io.FilePermission$1 from shared objects file]

  当虚拟机报告类找不到或类冲突时可用此参数来诊断来查看虚拟机从装入类的情况。

  7. -verbose:gc

  在虚拟机发生内存回收时在输出设备显示信息,格式如下:

  [Full GC 268K->168K(1984K), 0.0187390 secs]

  该参数用来监视虚拟机内存回收的情况。

  8.-verbose:jni

  在虚拟机调用native方法时输出设备显示信息,格式如下:

  [Dynamic-linking native method HelloNative.sum ... JNI]

  该参数用来监视虚拟机调用本地方法的情况,在发生jni错误时可为诊断提供便利。

  9.-version

  显示可运行的虚拟机版本信息然后退出。一台机器上装有不同版本的JDK时

  10.-showversion

  显示版本信息以及帮助信息。

  11.-ea[:<packagename>...|:<classname>]

  12.-enableassertions[:<packagename>...|:<classname>]

  从JDK1.4开始,java可支持断言机制,用于诊断运行时问题。通常在测试阶段使断言有效,在正式运行时不需要运行断言。断言后的表达式的
值是一个逻辑值,为true时断言不运行,为false时断言运行,抛出java.lang.AssertionError错误。

  上述参数就用来设置虚拟机是否启动断言机制,缺省时虚拟机关闭断言机制,用-ea
可打开断言机制,不加<packagename>和classname时运行所有包和类中的断言,如果希望只运行某些包或类中的断言,可将包
名或类名加到-ea之后。例如要启动包com.foo.util中的断言,可用命令 –ea:com.foo.util 。

  13.-da[:<packagename>...|:<classname>]

  14.-disableassertions[:<packagename>...|:<classname>]

  用来设置虚拟机关闭断言处理,packagename和classname的使用方法和-ea相同。

  15.-esa | -enablesystemassertions

  设置虚拟机显示系统类的断言。

  16.-dsa | -disablesystemassertions

  设置虚拟机关闭系统类的断言。

  17.-agentlib:<libname>[=<options>]

  该参数是JDK5新引入的,用于虚拟机装载本地代理库。

  Libname为本地代理库文件名,虚拟机的搜索路径为环境变量PATH中的路径,options为传给本地库启动时的参数,多个参数之间用逗
号分隔。在Windows平台上虚拟机搜索本地库名为libname.dll的文件,在Unix上虚拟机搜索本地库名为libname.so的文件,搜索
路径环境变量在不同系统上有所不同,Linux、SunOS、IRIX上为LD_LIBRARY_PATH,AIX上为LIBPATH,HP-UX上为
SHLIB_PATH。

  例如可使用-agentlib:hprof来获取虚拟机的运行情况,包括CPU、内存、线程等的运行数据,并可输出到指定文件中,可用-agentlib:hprof=help来得到使用帮助列表。在jre"bin目录下可发现hprof.dll文件。

  18. -agentpath:<pathname>[=<options>]

  设置虚拟机按全路径装载本地库,不再搜索PATH中的路径。其他功能和agentlib相同。

  19.-javaagent:<jarpath>[=<options>]

  虚拟机启动时装入java语言设备代理。Jarpath文件中的mainfest
文件必须有Agent-Class属性。代理类要实现public static void premain(String agentArgs,
Instrumentation inst)方法。当虚拟机初始化时,将按代理类的说明顺序调用premain方法。

Java命令参数说明的更多相关文章

  1. Java命令参数说明大全

    Java 在运行已编译完成的类时,是通过 java 虚拟机来装载和执行的,java 虚拟机通过操作系统命令 JAVA_HOME\bin\java –option 来启动,-option 为虚拟机参数, ...

  2. java命令--jstack 工具 查看JVM堆栈信息

    介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项" ...

  3. java命令--jstack 工具

    一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...

  4. java命令--jstack 工具【转载】

    一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...

  5. eclipse中的javac命令与java命令

    一.eclipse的javac命令:当eclipse对.java(源文件)文件进行保存操作时(快捷键ctrl+s),会执行javac命令.见上图,Default output folder(默认输出文 ...

  6. 穿越之旅之--android中如何执行java命令

    android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...

  7. mosquitto_pub和mosquitto_sub 命令参数说明

    mosquitto_pub 命令参数说明 1. -d  打印debug信息 2. -f  将指定文件的内容作为发送消息的内容 3. -h  指定要连接的域名  默认为localhost 4. -i   ...

  8. 学习 java命令

    依稀记得自己第一次编译*.java文件,第一次运行*.class文件.但是六七年过去了,现在运行java写的程序更多的是用tomcat这种web容器.最近有个小需求,写一个监控zookeeper集群的 ...

  9. javac 及 java命令的使用问题(错误或无法加载主类)

    一.问题 使用 javac 命令编译完.java源文件后,用 java 命令运行.class文件时,通常会遇到如下或类似的问题: 错误: 找不到或无法加载主类 HelloWorld.class 二.解 ...

随机推荐

  1. 轻应用 lapp

    轻应用 LAPP (Light App) 即轻应用是一种无需下载.即搜即用的全功能 App,既有媲美甚至超越native app的用户体验,又具备webapp的可被检索与智能分发的特性,将有效解决优质 ...

  2. poj 2184 Cow Exhibition(背包变形)

    这道题目和抢银行那个题目有点儿像,同样涉及到包和物品的转换. 我们将奶牛的两种属性中的一种当作价值,另一种当作花费.把总的价值当作包.然后对于每一头奶牛进行一次01背包的筛选操作就行了. 需要特别注意 ...

  3. HDU 4876 ZCC loves cards _(:зゝ∠)_ 随机输出保平安

    GG,,,g艹 #include <cstdio> #include <iostream> #include <algorithm> #include <st ...

  4. 让VC2012生成的程序支持XP系统(QT的DLL都是支持XP的,只与EXE有关)

    如果用的编译器是VC2012以上,那么默认生成出的程序是不能运行在XP系统上的.所以需要修改链接参数 我们要做的是修改qmake.conf文件中的参数,文件路径根据开发环境不同而不同下面以5.1.1 ...

  5. IE6_一些简单bug

    1.IE6调整窗口大小的 Bug 当把body居中放置,改变IE浏览器大小的时候,任何在body里面的相对定位元素都会固定不动了.给body定义position:relative;就行了. 2.避免百 ...

  6. ThinkPhp学习11

    原文:ThinkPhp学习11 一.模板的使用        (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[i ...

  7. 你真的了解JAVA中与Webservice相关的规范和实现吗?

    非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...

  8. Ubuntu下is not in the sudoers file 问题解决

    在Ubuntu12.04 下,使用sudo apt-get install XXX 时,突然跳出 username is not in the sudoers file的问题 然后我一查此userna ...

  9. poj 1611 The Suspects(并查集)

    The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 21598   Accepted: 10461 De ...

  10. 得到一个临时的文件名称(使用GetTempFileName API函数)

    function GetExePath: string; begin Result := ExtractFilePath(ParamStr()); end; function GetTempFileN ...