Java命令行参数详解

最近在学习Gradle相关的知识。下载Gradle源码后,未能成功导入IDEA运行。所以想另辟蹊径,通过命令行来调试运行Gradle程序。经过一番搜索和思考。发现Java通过jdwp可以远程调试java程序的。在实践的过程中,对一些命令行参数的含义不是特别清楚。故有此篇文章。

1. java命令 Oracle官方文档链接

java命令是用来启动一个Java程序的。

2. 概览

java [ options ] class [ arguments ]

java [ options ] -jar file.jar [ arguments ]

options

Command-line options. See Options.

class

The name of the class to be called.

file.jar

The name of the JAR file to be called. Used only with the -jar command.

arguments

The arguments passed to the main function.

3. 命令参数详解

java命令通过启动Java运行时环境,加载指定的类并调用该类的main方法来启动一个Java应用程序
指定的class需要声明一个main方法,格式如下:
public static void main(String[] args)
如果java命令后面没有option参数,那么紧跟其后的第一个参数就是Class的全路径二进制名。例如 java com.test.Test。如果指定了-jar。那么-jar后面跟的就是个包含了main方法的JAR文件,例如 java -jar Test.jar
Java虚拟机启动的时候需要加载启动类和其他需要用到的类。查找的顺序分别是启动类路径,扩展类路径,以及用户类路径。可以通过java -verbose:class查看类加载的顺序

Options

当前的Java虚拟机支持的Options分成Standard Options和NonStandard Options

1. Standard Options

-client
-server
两种java虚拟机的启动方式,默认是用server模式
-agentlib:libname[=options]
加载Native agent library,举例说明:
-agentlib:hprof dump堆栈
-agentlib:jdwp=help 命令行调试帮助
-agentlib:hprof=help dump堆栈的帮助
-agentpath:pathname[=options]
通过library的全路径名加载
-cp classpath
这个参数是用来指定类加载的路径。可以指定一个或者多个目录,JAR文件,或者ZIP文件,类加载会从指定的文件中查找。如果有多个文件用:隔开

如果-classpath或-cp和CLASSPATH都没有指定,那么默认会从执行java命令的当前目录查找类

为了方便,我们还可以用通配符*来代替多个路径

例如,如果目录mydir包含a.jar和b.JAR,则类路径元素mydir / *将扩展为A.jar:b.JAR,但不指定jar文件的顺序。列表中包含指定目录中的所有jar文件,包括隐藏的文件。一个仅包含*的类路径条目
展开为当前目录中所有jar文件的列表。定义的CLASSPATH环境变量将被类似地扩展。任何类路径通配符扩展都在Java VM启动之前发生。除了通过查询环境外,没有任何Java程序会看到没有扩展的通配符。例如,通过调用System.getenv(“CLASSPATH”)。
-Dproperty=value
设置系统属性.
-d32
-d64
在32位或64位模式下运行
-disableassertions[:package name”…” | :class name ]
-da[:package name”…” | :class name ]
禁用断言
-enableassertions[:package name”…” | :class name ]
-ea[:package name”…” | :class name ]
开启断言
-verbose
-verbose:class
显示类加载的信息
-verbose:gc
打印GC信息
-verbose:jni
打印jni相关信息

2. NonStandard Options

-X
打印出NonStandard Options(非标准参数)的帮助信息,并退出jvm
-Xint
让虚拟机只在解释型模式下运行,不允许生成本地指令(就是禁用JIT)。有可能会损失性能
-Xbatch
禁止后台编译。通常jvm编译方法是在后台进行的。
-Xnoclassgc
禁止Class常量被垃圾回收器回收。有可能会导致OutOfMemoryError
-Xincgc
开启增量垃圾回收。可以降低GC暂停时间
-Xloggc:file
打印GC log到指定文件。和-verbose:gc一起使用
-Xmnsize or -XX:NewSize
指定年轻代的大小
-Xmsn
指定java堆的初始大小
例子:
-Xms6291456
-Xms6144k
-Xms6m
-Xmxn
指定java堆的最大大小
例子:
-Xmx83886080
-Xmx81920k
-Xmx80m
-Xprof
分析正在运行的程序,并将分析数据发送到标准输出。该选项作为一个在程序开发中很有用的实用程序提供,并不打算用于生产系统。
-Xssn
设置java线程栈大小
-Xverify:mode
是否校验字节码格式。mode有如下三种
remote 默认方式。校验所有非bootstrap class loader加载类的字节码
all 校验所有的字节码
none 不校验字节码。但是目前没有支持
-XX:+|-DisableAttachMechanism
是否允许Java VM被命令attach。默认是关闭的。如果要开启可以如下命令
java -XX:+DisableAttachMechanism
-XX:+|-FlightRecorder
性能分析工具。
-XXLargePageSizeInBytes=n

Specifies the maximum size for large pages.

-XX:MaxGCPauseMillis=n
设置最大的GC 暂停时间
-XX:NewSize
同-Xmnsize.
-XX:ParallelGCThreads=n
设置并行垃圾回收的线程数量
-XX:+UseConcMarkSweepGC or -XX:+UseG1GC
开启Concurrent Mark Sweep (CMS) 或 G1 垃圾回收器.
-XX:+PrintGCDetails -XX:+PrintGCTimeStamps
打印带时间戳的垃圾回收日志

参考文章

  1. https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html#BGBJAAEH
  2. http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
(0)

相关推荐

  • 周末请看:2万字!JVM核心知识总结,赠送18连环炮

    回复"000"获取大量电子书 作为java开发人员,JVM是必备的,今天,我把JVM的核心知识点进行了一个总结,画了一张思维导图. 图展开太了,需要的加我微信tj20120622, ...

  • 搞定这24道JVM面试题,要价30k都有底气~

    回复"面试"获取全套面试资料 1.什么是JVM? JVM 的全称是 「Java Virtual Machine」,也就是我们耳熟能详的 Java 虚拟机.它能识别 .class后缀 ...

  • httprunner学习15-运行用例命令行参数详解

    前言 HttpRunner 在命令行中启动测试时,通过指定参数,可实现丰富的测试特性控制. 命令行参数CLI 使用 -h 查看相关命令行参数 hrun -h 参数名称 参数值 参数说明 -h, -he ...

  • Cypress web自动化23-cypress run 命令行参数详解

    前言 非 GUI 模式下命令行运行 cypress,需知道有哪些参数可以使用. 查看命令行参数 输入 -h 查看命令行参数 cypress run -h Runs Cypress tests from ...

  • 电视选购12个重要参数详解,看完你就是专家,附:爆款推荐

    本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:白云上的鱼 创作立场声明:分享电视选购知识,重要参数详解,轻松搞定电视选购. 目前电视的选择太多太多了,品牌百花齐放琳琅满目,各种高科技加成 ...

  • 佳能g16说明书里的【参数详解】

    导语 :说到佳能g16,相信喜欢相机的朋友应该听说过它吧.它是佳能公司2013年推出的一款中低端数码相机,在上一代数码相机的基础上采用了最新的digic6影像处理系统,使得该型号相机的处理性能大幅度提 ...

  • @Scheduled注解各参数详解

    @Scheduled注解的使用这里不详细说明,直接对8个参数进行讲解. 参数详解 1. cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域, ...

  • 隐藏进程命令行参数,例如输入密码等高危操作

    前言 启动程序很多时候用命令行参数可以很方便,做到简化一些配置,但是输入用户名密码等操作,如果通过进程查看工具直接看到密码就太不安全了. 因此很有必要研究如何隐藏命令行参数中的某些字段,当然做成配置文 ...

  • 如何控制线材的差分转共模参数详解

    随着USB4为代表的主流消费类Cable将带宽拉到40Gbps, 如今想要做好一条合格性能的Cable就越来越难,各种高频参数的设计和制造过程的控制都变得尤为重要,今天我们将目前反馈最多且最不容易通过 ...

  • (6条消息) OpenCV中的findContours函数参数详解

    OpenCV中的findContours函数参数详解 小白的进阶 2017-07-30 18:02:28 55008 收藏 303分类专栏:OpenCV 文章标签:opencvOpenCV中通过使用f ...

  • 电脑内存条该如何选择?标签的参数详解

    作为电脑中重要的五大硬件之一的内存,它到底该如何选择?看容量?看频率还是看品牌呢?首先我们要知道,内存在电脑中起到什么样的作用,它和硬盘一样都有容量,不同的是硬盘容量可以永久存储,内存条只能够临时存储 ...