最近在学习Gradle相关的知识。下载Gradle源码后,未能成功导入IDEA运行。所以想另辟蹊径,通过命令行来调试运行Gradle程序。经过一番搜索和思考。发现Java通过jdwp可以远程调试java程序的。在实践的过程中,对一些命令行参数的含义不是特别清楚。故有此篇文章。
java命令是用来启动一个Java程序的。
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.
public static void main(String[] args)
两种java虚拟机的启动方式,默认是用server模式
加载Native agent library,举例说明:
-agentlib:hprof dump堆栈
-agentlib:jdwp=help 命令行调试帮助
-agentlib:hprof=help dump堆栈的帮助
通过library的全路径名加载
这个参数是用来指定类加载的路径。可以指定一个或者多个目录,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”)。
设置系统属性.
在32位或64位模式下运行
禁用断言
开启断言
显示类加载的信息
打印GC信息
打印jni相关信息
打印出NonStandard Options(非标准参数)的帮助信息,并退出jvm
让虚拟机只在解释型模式下运行,不允许生成本地指令(就是禁用JIT)。有可能会损失性能
禁止后台编译。通常jvm编译方法是在后台进行的。
禁止Class常量被垃圾回收器回收。有可能会导致OutOfMemoryError
开启增量垃圾回收。可以降低GC暂停时间
打印GC log到指定文件。和-verbose:gc一起使用
指定年轻代的大小
指定java堆的初始大小
例子:
-Xms6291456
-Xms6144k
-Xms6m
指定java堆的最大大小
例子:
-Xmx83886080
-Xmx81920k
-Xmx80m
分析正在运行的程序,并将分析数据发送到标准输出。该选项作为一个在程序开发中很有用的实用程序提供,并不打算用于生产系统。
设置java线程栈大小
是否校验字节码格式。mode有如下三种
remote 默认方式。校验所有非bootstrap class loader加载类的字节码
all 校验所有的字节码
none 不校验字节码。但是目前没有支持
是否允许Java VM被命令attach。默认是关闭的。如果要开启可以如下命令
java -XX:+DisableAttachMechanism
性能分析工具。
Specifies the maximum size for large pages.
设置最大的GC 暂停时间
同-Xmnsize.
设置并行垃圾回收的线程数量
开启Concurrent Mark Sweep (CMS) 或 G1 垃圾回收器.
打印带时间戳的垃圾回收日志