Java 选项
java
命令支持多种选项:
-
所有选项都以单个连字符或减号(
-
)开头:不支持将--
用于long
选项的 GNU / Linux 约定。 -
选项必须出现在
<classname>
或-jar <jarfile>
参数之前才能被识别。它们之后的任何参数都将被视为要传递给正在运行的 Java 应用程序的参数。 -
不以
-X
或-XX
开头的选项是标准选项。你可以依赖所有 Java 实现 1 来支持任何标准选项。 -
以
-X
开头的选项是非标准选项,可以从一个 Java 版本撤回到下一个 Java 版本。 -
以
-XX
开头的选项是高级选项,也可能被撤销。
使用 -D
设置系统属性
-D<property>=<value>
选项用于在系统 Properties
对象中设置属性。可以重复此参数以设置不同的属性。
内存,堆栈和垃圾收集器选项
设置堆,PermGen 和堆栈大小中记录了控制堆和堆栈大小的主要选项。 (编者注:垃圾收集器选项应在同一主题中描述。)
启用和禁用断言
-ea
和 -da
选项分别启用和禁用 Java assert
检查:
- 默认情况下禁用所有断言检查。
-ea
选项可以检查所有断言-ea:<packagename>...
可以检查包和所有子包中的断言。-ea:<classname>...
可以检查类中的断言。-da
选项禁用所有断言的检查-da:<packagename>...
禁用检查包和所有子包中的断言。-da:<classname>...
禁止检查类中的断言。-esa
选项可以检查所有系统类。-dsa
选项禁用检查所有系统类。
选项可以组合。例如。
$ # Enable all assertion checking in non-system classes
$ java -ea -dsa MyApp
$ # Enable assertions for all classes in a package except for one.
$ java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat MyApp
请注意,启用断言检查可能会改变 Java 编程的行为。
- 它一般会使应用程序变慢。
- 它可能导致特定方法花费更长的时间来运行,这可能会改变多线程应用程序中的线程的时间。
- 它可以引入偶然发生的关系,这可能导致记忆异常消失。
- 错误实现的
assert
语句可能会产生不必要的副作用。
选择 VM 类型
-client
和 -server
选项允许你在两种不同形式的 HotSpot VM 之间进行选择:
- 客户端表单针对用户应用程序进行了调整,并提供更快的启动。
- 服务器表单针对长时间运行的应用程序进行了调整。在 JVM预热期间需要更长的捕获统计信息,这允许 JIT 编译器更好地优化本机代码。
默认情况下,如果可能,JVM 将以 64 位模式运行,具体取决于平台的功能。-d32
和 -d64
选项允许你明确选择模式。
1 - 查看 java
命令的官方手册。有时标准选项被描述为可能会发生变化。