PHP有像Java这样的虚拟机吗?

2022-09-04 08:09:55

PHP有像Java这样的虚拟机吗?


答案 1

是的。

独立于运行PHP的平台,脚本被编译成相同的字节码并由Zend引擎运行。

与Java的不同之处在于,此编译的代码通常不会存储在单独的文件中,并且脚本在每次执行时都会重新编译(但是,请参阅操作码缓存)。


答案 2

Zend引擎和典型的JVM之间的另一个重要区别在于它们执行字节码的方式:

  • Zend 引擎直接执行(解释)已编译的字节码。(至少我认为这是发生的。我无法从Zend在线文档中确认这一点!
  • JVM 通常使用 JIT 编译器将字节码编译为本机指令,然后执行本机指令。

实际上,JVM行为比这更复杂。JVM并不总是编译为本机代码,当他们这样做时,它们通常会延迟JIT编译,直到他们认为值得这样做。在此之前,他们直接执行字节码。


推荐