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 命令的官方手册。有时标准选项被描述为可能会发生变化