Java命令讲解

Posted 晨港飞燕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java命令讲解相关的知识,希望对你有一定的参考价值。

读完本篇文章你会了解到java命令参数的含义,并可初步使用java命令来更好的启动和创建我们的应用。

一.创建和编译应用

这里可以看到一些内置命令工具:


java:Launches a Java application.,启动一个java应用比如java -jar
javac:Reads Java class and interface definitions and compiles them into bytecode and class

files.,编译工具,将源代码编译成字节码或者class文件
javap:Disassembles one or more class files.,反汇编
javadoc:Generates html pages of API documentation from Java source files.java API文档生成工具
jar:Manipulates Java Archive (JAR) files.操作jar包的,jar包本质上也是zip文件。
jdb:Finds and fixes bugs in Java platform programs.java debug,有idea后几乎不用了。


二.常用命令的选项参数

java命令

使用java命令启动应用时,该应用就通过jre来加载特定的类,并调用main方法,该方法必须声明为 public 和 static,它不能返回任何值,并且它必须接受一个 String 数组作为参数。

C:\\Users\\Administrator>java -help
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32          使用 32 位数据模型 (如果可用)
    -d64          使用 64 位数据模型 (如果可用)
    -server       选择 "server" VM
                  默认 VM 是 server.

    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
                  用 ; 分隔的目录, JAR 档案
                  和 ZIP 档案列表, 用于搜索类文件。
    -D<名称>=<值>
                  设置系统属性
    -verbose:[class|gc|jni]
                  启用详细输出
    -version      输出产品版本并退出
    -version:<值>
                  警告: 此功能已过时, 将在
                  未来发行版中删除。
                  需要指定的版本才能运行
    -showversion  输出产品版本并继续
    -jre-restrict-search | -no-jre-restrict-search
                  警告: 此功能已过时, 将在
                  未来发行版中删除。
                  在版本搜索中包括/排除用户专用 JRE
    -? -help      输出此帮助消息
    -X            输出非标准选项的帮助
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  按指定的粒度启用断言
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  禁用具有指定粒度的断言
    -esa | -enablesystemassertions
                  启用系统断言
    -dsa | -disablesystemassertions
                  禁用系统断言
    -agentlib:<libname>[=<选项>]
                  加载本机代理库 <libname>, 例如 -agentlib:hprof
                  另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
    -agentpath:<pathname>[=<选项>]
                  按完整路径名加载本机代理库
    -javaagent:<jarpath>[=<选项>]
                  加载 Java 编程语言代理, 请参阅 java.lang.instrument
    -splash:<imagepath>
                  使用指定的图像显示启动屏幕

有关详细信息, 请参阅:

http://www.oracle.com/technetwork/java/javase/documentation/index.html

 

另外,这个命令的非标准选项也是很重要的,常常在JVM优化配置方面很关键

C:\\Users\\Administrator>java -X
    -Xmixed           混合模式执行(默认)
    -Xint             仅解释模式执行
    -Xbootclasspath:<用 ; 分隔的目录和 zip/jar 文件>
                      设置引导类和资源的搜索路径
    -Xbootclasspath/a:<用 ; 分隔的目录和 zip/jar 文件>
                      附加在引导类路径末尾
    -Xbootclasspath/p:<用 ; 分隔的目录和 zip/jar 文件>
                      置于引导类路径之前
    -Xdiag            显示附加诊断消息
    -Xnoclassgc        禁用类垃圾收集
    -Xincgc           启用增量垃圾收集
    -Xloggc:<file>    将 GC 状态记录在文件中(带时间戳)
    -Xbatch           禁用后台编译
    -Xms<size>        设置初始 Java 堆大小
    -Xmx<size>        设置最大 Java 堆大小
    -Xss<size>        设置 Java 线程堆栈大小
    -Xprof            输出 cpu 分析数据
    -Xfuture          启用最严格的检查,预计会成为将来的默认值
    -Xrs              减少 Java/VM 对操作系统信号的使用(请参阅文档)
    -Xcheck:jni       对 JNI 函数执行其他检查
    -Xshare:off       不尝试使用共享类数据
    -Xshare:auto      在可能的情况下使用共享类数据(默认)
    -Xshare:on        要求使用共享类数据,否则将失败。
    -XshowSettings    显示所有设置并继续
    -XshowSettings:system
                      (仅限 Linux)显示系统或容器
                      配置并继续
    -XshowSettings:all
                      显示所有设置并继续
    -XshowSettings:vm 显示所有与 vm 相关的设置并继续
    -XshowSettings:properties
                      显示所有属性设置并继续
    -XshowSettings:locale
                      显示所有与区域设置相关的设置并继续

-X 选项是非标准选项。如有更改,恕不另行通知。

 

三.命令划分

java命令给我们提供了非常多的命令参数,当然也有非常多的划分,但我认为主要是两种划分:第一种是按选项进行划分,第二种是按照使用环境区分,我们可以使用java命令来看下:

1.选项划分

标准选项:以“-”开头,比如-help -version,Java 虚拟机 (JVM) 的所有实现都保证支持标准选项。

非标准选项:以“-X”开头,特定于Java HotSpot 虚拟机的通用选项,因此不能保证所有 JVM 实现都支持它们,并且可能会发生变化。

高级选项:以“-XX”开头,这些是用于调整 Java HotSpot 虚拟机操作的特定区域的开发人员选项,这些区域通常具有特定的系统要求,并且可能需要对系统配置参数的特权访问。也不能保证所有 JVM 实现都支持它们,并且可能会发生变化。

布尔选项:用于启用默认禁用的功能或禁用默认启用的功能。此类选项不需要参数。布尔 -XX 选项使用加号 (-XX:+OptionName) 启用,使用减号 (-XX:-OptionName) 禁用。

2.使用环境划分

1).系统属性

java -D:设置属性值java -D属性名 = 属性值比如:java -Dfile.encoding=utf-8

2).运行模式

java -server 选择虚拟机模式,默认是“server”java虚拟机在启动应用时,启动器会对虚拟机模式进行检测,检测应用是否在服务器上的机器运行,如果是,那就以服务器的模式运行,目的是提高性能。

java虚拟机分为客户端模式和服务器模式,客户端模式下默认-Xms是1M,-Xmx是64M,适用于占用内存小,启动更快的产品,而服务端模式默认-Xms是128M,-Xmx是1024M,启动慢,但运行时性能和内存管理效率高,适用于生产环境。

java -Xmixed 混合模式执行 (默认)

java -Xint 仅解释模式执行

3).堆内存设置

4).GC设置

-XX:+UseParallelGC

-XX:+UseParallelOldGC

-XX:+UseParNewGC

-XX:+UseSerialGC

-XX:+UseParallelGC

-XX:+UseConcMarkSweepGC

-XX:+UseG1GC

5).分析诊断

-XX:+HeapDumpOnOutOfMemoryError:异常堆的快照,默认关闭,示例:-XX:+HeapDumpOnOutOfMemoryError -Xmx 256m 再指定个文件名

-XX:HeapDumpPath=path与上面的配合使用,指定转存文件目录,示例:-XX:HeapDumpPath=C:/log/java/java_heapdump.log

-XX:OnError=string,当错误发生的时候运行的命令,%p代表当前进程示例:-

-XX:OnOutOfMemoryError=string 与上面一样。

6).JavaAgent

参考:

java命令行参数详解_腾讯新闻

java命令详解 - XZC.Log - BlogJava

log4j相关文章:

log4j 读取系统环境变量

log4j详细配置

​Java 配置log4j日志文件路径

log4j2配置文件动态获取容器环境变量

以上是关于Java命令讲解的主要内容,如果未能解决你的问题,请参考以下文章

Java面试- JVM 内存模型讲解

JVM原理讲解和调优

JVM原理讲解和调优

Java面试题超详细讲解系列之四Jvm篇

Java开发实战讲解!docker导出镜像到本地镜像仓库

Java开发实战讲解!docker导出镜像到本地镜像仓库