java命令行介绍

1.总述

java命令用来启动一个java应用。有以下两种用法:

java [options] mainClass [args...]

java [options] -jar jarfile [args...]

第一种从指定的java类开始启动,第二种从可运行的jar开始启动。java应用启动的过程有三个步骤,首先启动java运行时环境JRE,然后加载所需的类,最后调用类的main方法。

命令行的各部分含义如下:

options 由空格分隔的命令行选项,下一节详细说明

mainClass 待启动类包含包路径的类全名,其中需要有main()方法

jarfile 待启动的jar包的路径名称

args 传给启动类的main()方法的参数,用空格分开

2.命令行选项

java的命令行选项分为三类:

1.标准选项。jvm必须实现的选项,实现通用的功能,如检查运行环境,检查JRE的版本,设置类路径等。

2.扩展选项。HotSpot虚拟机实现常用功能的选项,其他jvm不一定实现。此类选项前缀为:-x

3,高级选项。高级选项是开发者选项,不保证在所有的jvm上实现,并可能会改变。高级选项也可以分为如下四种类型:
1) 高级运行时选项:控制jvm运行时的行为
2) 高级维护性选项:支持收集系统信息和调试
3) 高级GC选项:控制jvm的垃圾收集行为
4) 高级JIT选项:控制jvm的及时编译行为

3.标准选项

-version 打印版本信息然后退出,经常使用该参数来打印java的版本或者验证java是否可用。

-Dproperty=value 设置系统属性的值。其中属性名不能含哟空白字符,属性值如果含有空白字符,需要用引号括起来。如下:

-Dhello="hello world" 该值可以在java程序中用如下代码获取:

System.getProperty("hello")

-server -client 指定jvm的模式,client模式用于桌面应用,server模式用于服务端应用。jvm对两种模式有相应的优化,client模式加载速度快,可以快速启动,server模式加载速度较慢但运行起来快。

-agentlib:libname[=options] 加载指定的native代理库。可以指定多个库,用,分隔。

4.扩展选项

-Xmx size 指定堆的最大大小。如果指定2GB的最大堆,可用如下任意方式表示:
-Xmx2G -Xmx2048m -Xmx2097152K - Xmx2147483648
此外,该选项等效于 -XX:MaxHeapSize

-Xms size 指定堆的初始化的大小。对于server端的应用,建议将-Xmx-Xms设置为相同的值方可获取更好的性能。如果不设置该值,那么该值默认就为新生代和老年代的大小的和。

-Xmn size 指定堆中新生代的初始化的值。官方建议将该值设置为堆的最大值的25%-50%区间内。

-Xss size 指定线程栈的大小。该选项的默认值随操作系统的不同而不同。linux环境下默认为1m,windows环境下取决于虚拟内存的大小。该选项等效于 -XX:XX:ThreadStackSize

5.高级运行时选项

-XX:MaxHeapSize=size 设置最大堆大小,见-Xmx

-XX:InitialHeapSize=size 设置初始堆大小,见-Xms

-XX:NewSize 设置新生代初始大小,见-Xmn

-XX:ThreadStackSize=size 设置线程栈大小,见-Xss

-XX:MaxMetaspaceSize=size 设置永久代大小,JDK8以下使用-XX:MaxPermSize=size

-XX:MaxDirectMemorySize=size 设置Java Nio可以使用的最大直接内存。默认情况下,该选项值为0,JVM将会自主确定一个大小值。

6.高级维护性选项

-XX:+HeapDumpOnOutOfMemoryError 开启堆转储功能。当Java应用抛出OutOfMemoryError异常时可以使用堆转储工具(HPROF)将Java堆存储到文件中。默认文件存储在当前路径下,文件名为java_pid[pid].hprof。此外,还可使用选项-XX:HeapDumpPath=path指定文件地址。一个示例如下(其中%p表示进程PID):
-XX:HeapDumpPath=/data/log/java_pid%p.hprof

-XX:LogFile=path 设置日志文件的地址。默认情况下,文件被写到当前目录下,文件名为hotspot.log。一个示例如下:
-XX:LogFile=/data/log/hotspot.log

-XX:OnOutOfMemoryError=string 设置发生OutOfMemoryError后执行的处理命令,多个命令可使用分号;分隔。如果命令中含有空格,需要使用双引号"包裹命令。

本文只是列出了java命令行的部分命令,更详细的信息可参考官网介绍
java命令行指南

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.总述 java命令用来启动一个JAVA应用。有以下两种用法: 第一种从指定JAVA类启动,第二种从可运行jar...
    Hypercube阅读 11,112评论 2 12
  • 紧接前一文JAVA命令行工具(一)--JAVA,垃圾回收由于有较多选项,所以单独成篇,关于选项的通用描述可参见前文...
    Hypercube阅读 3,206评论 1 1
  • Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 屏蔽了与具体操作系...
    尹小凯阅读 1,711评论 0 10
  • 好种子开花:我的师父送给我一份礼物。这份礼物是我一直都很喜欢的,价格很贵的东西。我还没买呢。现在师父送给我了。我好...
    暖阳照耀阅读 229评论 0 0
  • 菩萨蛮 • 又逢花落时文/梧桐 绵绵柳絮莺啼绝,丝丝细雨风声歇。春色几多留,翠华眉上愁。 一杯离别酒,...
    乐健君阅读 4,452评论 35 228