提供有关适用于 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