java程序调用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件) 其中options包括: -d32 使用 32 位数据模型 (如果可用) -d64 使用 64 位数据模型 (如果可用) -server 选择 server VM 默认 VM 是 server, 因为您是在服务器类计算机上运行。 ... "-D<名称>=<值> 设置系统属性" ...
这里重点关注jvm参数, 也就是-D这个, 其他选项就省略了. -D开头的选项会被作为系统属性值,可以使用System.getProperty("name")
获取.
仔细观察可以发现:
所有的 option都是以-
开头.
第一个没有短横线的参数,会被认为是class
class
后边的所有参数会被作为 main
函数的 args[]
综上: 系统属性通过-Dkey=value
来设置, 出现在 class
的前面, 而程序运行参数出现在class的后面, 解析方式和命令行参数一致, 以空格分割为String[]
,传给main
方法.
SpringBoot 的args
参数: [args...]
中以--key=value
形式存在的参数, 会被SpringBoot
搜集处理, 放在properites
中,在程序中可以直接使用 ${"key"}
的方式引用.
jvm非标准选项 -X 以下是java 8 的非常标准选项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 -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:all 显示所有设置并继续 -XshowSettings:vm 显示所有与 vm 相关的设置并继续 -XshowSettings:properties 显示所有属性设置并继续 -XshowSettings:locale 显示所有与区域设置相关的设置并继续 -X 选项是非标准选项, 如有更改, 恕不另行通知。 以下选项为 Mac OS X 特定的选项: -XstartOnFirstThread 在第一个 (AppKit) 线程上运行 main() 方法 -Xdock:name=<应用程序名称>" 覆盖停靠栏中显示的默认应用程序名称 -Xdock:icon=<图标文件的路径> 覆盖停靠栏中显示的默认图标
其中比较常用的是 -Xms
-Xmx
用来设置jvm堆内存大小。
java高级运行时选项, Advanced Runtime Options These options control the runtime behavior of the Java HotSpot VM. 用来控制jvm运行时的行为。 例如8以前的版本常用 -XX:PermSize=256m
来控制持久带的大小。 高级选项可以通过 man java
来查看java命令的详情文档, 里面有完整的描述。