为什么 JIT 编译器不能用来生成二进制文件?

Raf*_*mal 4 java jit

JIT 编译器用于将 java 字节码转换为本机机器语言。据我所知,还没有程序可以直接将java字节码转换为二进制文件,例如.exe文件。那么为什么 JIT 编译器不能用于从字节码生成二进制文件呢?

Pet*_*rey 5

JIT 编译器动态编译代码。

  • 它为不同类型的 CPU 生成不同的代码。
  • 它为不同的内存模型生成不同的代码,例如,对于 64 位 JVM,如果最大堆大小为 < 4 GB、< 24 GB、< 32 GB 或更大,则在每种情况下都会生成不同的代码。
  • 当类被加载和卸载时,它将重新编译代码。
  • 它将根据代码的使用方式重新优化代码。例如,如果曾经关闭的标志现在不再打开,反之亦然。

静态编译器不能做这些事情。