Java JVM是否具有特定于机器的优化标志?
我知道JVM解释/JIT字节码;JVM提供特定于平台的机器代码生成功能(和运行时),用于在当前上下文中运行程序 我想了解JVM中有哪些特定于平台的代码生成调优选项。我遇到了,这实际上是调整JVM运行时的唯一标志Java JVM是否具有特定于机器的优化标志?,java,jvm,code-generation,Java,Jvm,Code Generation,我知道JVM解释/JIT字节码;JVM提供特定于平台的机器代码生成功能(和运行时),用于在当前上下文中运行程序 我想了解JVM中有哪些特定于平台的代码生成调优选项。我遇到了,这实际上是调整JVM运行时的唯一标志 我很想知道JVM是否允许为特定平台的代码生成提供调优选项,就像x86上的gcc一样。首先,JVM标志与gcc的优化标志有根本的不同。GCC标志影响编译时生成的代码。JVM选项(只要它们影响JIT编译)不会影响字节码 有各种各样的标志影响JIT编译器发出的本机代码;例如: -ea选项确定
我很想知道JVM是否允许为特定平台的代码生成提供调优选项,就像x86上的gcc一样。首先,JVM标志与gcc的优化标志有根本的不同。GCC标志影响编译时生成的代码。JVM选项(只要它们影响JIT编译)不会影响字节码 有各种各样的标志影响JIT编译器发出的本机代码;例如:
选项确定是否检查断言-ea
选项(部分)控制代码何时是JIT编译器,从而影响其优化。-server
选项也执行相同的操作-Xcomp
和-Xint
影响代码是否进行JIT编译-Xmixed
-XX:ObjectAlignmentInBytes
,-XX:CompressedOops
,-XX:acgressiveopts
,-XX:AllocatePrefetch
选项,-XX:doescapesanalysis
,-XX:Inline
选项,-XX:OptimizeStringConcat
,-XX:UseAES
选项和-XX:UseSHA
选项
有关更完整的列表,请参阅您平台的Oracle文档
请注意:
- 所有JIT代码优化都是特定于平台的,因为JIT编译器会针对实际运行的硬件进行优化
- 相反,JIT编译器不需要被告知针对哪个平台进行优化
- 上述一些选项是特定于平台的/具有特定于平台的效果(请参阅文档)
- Java版本之间的
和-X
选项可能会更改-XX
1-对于单线程Java代码,优化设置不应改变程序的行为。对于多线程代码,由于同步不足,错误应用程序的行为可能会发生变化。虽然这可能对优化器设置很敏感,但也可能受到硬件特性、Java版本等的影响。为什么会有反对票?我猜这是因为您请求引用非现场资源,这是离题的。