为什么Java的架构师不能让我们简单地做:
java -jar -myProp="Hello World" myProgram.jar
它今天可以工作,但假设在下一个Java版本中,一个参数作为JVM选项引入。
如何区分您的JVM选项?不可能。
因此,它存在一个明显的理由来定义系统属性。-myProp
-myProp
-myProp
-D
作为另一个示例,而不是假设您的程序依赖于系统属性。
它不会运行:-myProp
-client
java -jar -client="davidxxx" myProgram.jar
您将遇到 JVM 错误,例如:
无法识别的选项: -client=davidxxx
就像一个不期望任何值的JVM标准选项一样。-client
但是,如果您使用 ,它现在很好,因为这里被定义为与标准 JVM 选项不同的系统属性:-D-client
-Dclient
-client
java -jar -D-client="davidxxx" myProgram.jar
或者同时使用两者:
java -jar -client -D-client="davidxxx" myProgram.jar
更进一步,并非所有 JVM 参数都以 -D 开头
。但是它们中的大多数都有一个前缀(,,),允许以某种方式定义命名空间。-D
-X
-XX
你有不同类别的JVM参数:
1. 标准选项(-D
,但不仅如此)。
这些是 JVM 的所有实现都支持的最常用的选项。
您用于指定系统属性,但其中大多数没有任何前缀 :, ,,等等...-D
-verbose
-showversion
2. 非标准选项(以 -X
为前缀)
这些选项是特定于 Java 热点虚拟机的通用选项。
例如:-Xmssize
-Xmxsize
3. 高级运行时选项(前缀为 -XX
)
这些选项控制 Java HotSpot VM 的运行时行为。
4. 高级 JIT 编译器选项(前缀为 -XX
)
这些选项控制由 Java HotSpot VM 执行的动态实时 (JIT) 编译。
5. 高级可维护性选项(前缀为 -XX
)
这些选项提供了收集系统信息并执行大量调试的功能。
6. 高级垃圾回收选项(前缀为 -XX
)
这些选项控制 Java HotSpot VM 执行垃圾回收 (GC) 的方式。