有关适用于 Java 的 Azure 命令启动器常见问题解答

提供有关适用于 Java 的 Azure 命令启动器常见问题的解答。

“jaz”与“java”命令有何不同?

除非用户显式配置,否则该 java 命令会运行具有默认设置的 HotSpot JVM。
jaz 使用 java 经过战斗测试的云优化 JVM 优化默认值启动,旨在提高 Azure 容器和 VM 上的性能和成本效益。 关键优势:开发人员无需手动优化 JVM。 jaz 为他们做。

如果我已在环境中设置一些 JVM 选项,该怎么办?

如果工作负荷已包含优化标志, jaz 仍将有效。 建议删除这些标志并 jaz 应用自己的标志,除非确切地知道这些标志的用途以及为什么需要它们。 如果要保留特定设置,可以正常传递它们。 jaz 将它们追加到最终 java 命令的末尾。

如果使用“jaz”传递自定义 JVM 标志,会发生什么情况?

是的。 jaz 允许用户传递的任何 JVM 选项优先。 启动器将 JVM 标志追加到最终 java 命令行。 JVM 将最右边的标志视为优先级最高的标志,因此自定义设置将替代 jaz 默认值(如果它们匹配)。 不过,某些标志可能会冲突, java 并且启动器可能不会启动。 例如, jaz 将自动选择垃圾回收器。 如果命令还指定 GC 选择标志(例如 -XX:UseZGC),启动 java 器将失败。

是否可以使用“jaz”传递“java”代理标志和选择性 -XX 选项?

是的。 你仍然可以传递任何 java 参数,包括 -javaagent,它们将被遵守 jaz。 建议:删除常规用途优化标志,例如 -Xmx-XX:MaxRAMPercentage等等,为你 jaz 设置这些标志。
可以保留有用的诊断标志,例如:

  • -XX:NativeMemoryTracking=summary
  • -XX:+UnlockDiagnosticVMOptions
  • -Xlog-XX:LogFile 日志记录
  • -javaagent For Application Insights 或其他 APM 检测代理

jaz 将标志追加到最终命令,因此值将在适用时替代 jaz 默认值。 如果要 jaz 完全跳过其所有优化以进行故障排除,可以使用:

JAZ_BYPASS=1

这对于在清理 JVM 优化标志之前仅依赖现有用户提供的 JVM 配置或jaz启动器默认值时要加入java时非常有用。

“jaz”是否与非 Azure 环境兼容?

jaz 主要针对 Azure 容器和 VM 进行设计和测试,但在技术上可以在其他位置运行。 但是,某些高级优化和将来的功能可能特定于 Azure。

“jaz”是否可用于 Windows Server?

jaz 目前适用于 x64 和 arm64 环境中的 Linux。 如果立即需要 Windows Server,请联系我们 openjdk-support@microsoft.com