谢岗仿做网站,网站建设完成后交付方式,wordpress价钱,关于asp_sql网站开发的书籍Java启动命令是所有java应用程序的入口#xff0c;通过它来启动Java运行时环境#xff0c;并加载相关的class。不过由于IDE的盛行#xff0c;我们Java程序员中的大多数并不是非常的了解Java启动命令。本文希望做一个Java启动命令的汇总#xff0c;和各位同道分享#xff0…Java启动命令是所有java应用程序的入口通过它来启动Java运行时环境并加载相关的class。不过由于IDE的盛行我们Java程序员中的大多数并不是非常的了解Java启动命令。本文希望做一个Java启动命令的汇总和各位同道分享也便于日后作为自己的参考。
Java启动命令语法
Java启动命令有两个java以及javaw它们的唯一区别是javaw不会启动一个控制台窗口(启动失败的时候会弹出附有错误信息的窗口)而java会。不希望有控制台的时候用javaw其它时候用java。它们的语法结构都一样只需要记住其中一个即可。调用程序有两种方式指定Class以及指定jar文件具体的语法如下
java [options] class [arguments]java [options] -jar file.jar [arguments]javaw [options] class [arguments]javaw [options] -jar file.jar [arguments]
其中[options]表示Java运行环境的可选配置信息会影响java运行环境是性能调优的关键所在可以传多个选择项。class表示的是包含main函数的class名称(含包名)。-jar和file.jar配对使用-jar指示用jar方式启动而file.jar表示的时jar文件的名称替换为自己的jar文件名字即可。[arguments]表示的是程序自身的参数会被传到main函数的参数数组里面为程序自己所使用。
Java启动命令可选项(options)
Java启动命令可选项(options)大致可分为标准和非标准两种非标准的可选项不保证在所有平台上都实现并且未来的版本中可能会被修改且不告知总之就是不稳定(Unstable)。不过有的非标准可选项还是非常有用的后面我们会谈到。
标准可选项(Standard options) -client 与 -server 以clien或者server模式启动二选一Java运行时环境会依场景来优化自己的配置策略。值得指出的是64位的Java不支持client模式默认就是server。不同平台的默认配置可以参考Server-Class Machine Detection -cp 和 -classpath 最重要的可选项之一指定Java运行时环境搜索class的路径。-cp只是-classpath的简写做相同的事情用其中之一即可。多个路径用英文里面的分号分隔。如果-cp和-classpath都没有使用CLASSPATH环境变量也没用设定那么就是当前路径(.)。 -Dpropertyvalue 设定系统属性值比如编码-Dfile.encodingUTF-8。可以设定一些系统使用的属性也可以用来向程序传递值比如程序的根目录。 可以通过System.getProperty(keyname)来获取属性。 -help与-? 都是要求显示帮助信息 disableassertions[:packagename...|:classname]与da[:packagename...|:classname] 禁用断言可以指定包名(注意包后面的三个点)或者class的名称。默认就是禁用的。da只是disableassertions的缩写使用方法完全一样。 禁用包: da:org.slf4j... 禁用类: da:org.slf4j.LoggerFactory enableassertions[:packagename...|:classname]与ea[:packagename...|:classname] 启用断言可以指定包名(注意包后面的三个点)或者class的名称。ea只是enableassertions的缩写使用方法完全一样。 启用包: ea:org.slf4j... 启用类: ea:org.slf4j.LoggerFactory disablesystemassertions与dsa 禁用系统类(syetem class)断言 enablesystemassertions与esa 启用系统类(syetem class)断言 -version 与 -showversion 这两个都显示Java的版本信息不过后者会把help的信息也显示出来。 verbose:class, verbose:gc, verbose:jni verbose:class显示class加载信息verbose:gc显示Java垃圾回收的信息。verbose:jni显示JNI(Java Native Interface)信息。 -agentlib:agentlibname[options]与-agentpath:pathtoagent[options] 都是加载本地代理库(Native Agent Library)-agentlib只需要library的名称且会根据不同的操作系统转为对应的文件(Windows为DLL)。 -agentpath指定library的绝对路径。
非标准可选项(Nonstandard Options)
非标准的可选项都以-X开始其中的部分选项如下: -X 显示所有非标准选项的信息。看看都有些什么非标准选项吧。java -X。 -Xmssize 设置Java堆的初始化大小。例如 -Xms1024mJava堆的初始化大小就设置为1G。 -Xmxsize 设置Java堆的最大值。例如 -Xmx3072mJava堆的最大值就设置为3G。 -Xsssize 设置Java线程栈的值。例如 -Xss128mJava线程栈的值就设置为128兆。 -Xnoclassgc 禁用Java垃圾回收器。 -Xincgc 启用Java增量式垃圾回收器。 -Xmixed 解释模式和编译模式混合执行 -Xint 仅解释模式执行 -Xshare:on-Xshare:off-Xshare:auto 设定类数据共享CDS(Class data sharing)是否开启。-Xshare:on要求一定要用共享的类数据-Xshare:auto表示让系统自己判断 是否有类共享数据有就用没有不用-Xshare:off禁用共享类数据。 -Xcheck:jni 针对JNI函数做额外的检查
不稳定(Unstable)的选项
不稳定的选项当然是非标准的都以-XX开头。这一类参数有很多暂时只列其中的几个: -XX:PermSizesize和-XX:MaxPermSizesize 设置Java永久保存区域(Permanent Generation Space)的大小。PermSize设置初始值MaxPermSize设置最大值。 该区域主要存储class的信息且不会被 垃圾回收器回收如果加载的class过多就会报错:java.lang.OutOfMemoryError: PermGen space。 -XX:PermSize64m -XX:MaxPermSize128m表示Java永久保存区域大小初始化问为64兆最大为128兆。 -XX:UseParallelGC 开启并行Java回收器 -XX:PrintGCDetails 显示比-verbose:gc更多更准确的垃圾回收信息 -XX:TraceClassLoading 显示类加载以及卸载的信息
程序参数(arguments)
class或者jar文件之后的字符串会传给main函数的String[] args参数多个参数用空格隔开。如果某一个参数包含多个单词那么需要用引号包起来。当有很多程序参数且有的必填有的可选的时候如果不设计好顺序是很头疼的问题。一种解法是传键值对(keyvalue)完全不用在意参数的顺序。在main函数里面把键值对解析成Map然后再校验以及使用。简单的示例代码如下: public static void main(String[] args) {MapString, String arguments getArguments(args);for (String key : arguments.keySet()) {System.out.println(key arguments.get(key));}}public static MapString, String getArguments(String[] args) {MapString, String arguments new HashMapString, String();if (args null || args.length 0) {return arguments;}for (String arg : args) {int index arg.indexOf();// 没有或者是第一个都出错。if (index 1) {throw new RuntimeException(param must be key value pair);}String key arg.substring(0, index);String value arg.substring(index 1);arguments.put(key, value);}return arguments;} 参考链接
Launches Java applicationServer-Class Machine DetectionIBM User Guide for Java