我阅读了以下文章:
http://searchcio-midmarket.techtarget.com/definition/just-in-time-compiler
http://javarevisited.blogspot.in/2011/12/jre-jvm-jdk-jit-in-java-programming.html
我现在真的很想知道当我上课时会发生什么。JIT 再次编译字节码,然后 ???
这个编译后的代码会被 JVM 转换成 .exe 吗?
我阅读了以下文章:
http://searchcio-midmarket.techtarget.com/definition/just-in-time-compiler
http://javarevisited.blogspot.in/2011/12/jre-jvm-jdk-jit-in-java-programming.html
我现在真的很想知道当我上课时会发生什么。JIT 再次编译字节码,然后 ???
这个编译后的代码会被 JVM 转换成 .exe 吗?
就像其他人所说:JIT 并不意味着将代码编译为二进制可执行文件(.exe)。但是,您可能会考虑一个有趣的应用程序是Excelsior JET。
我没有阅读太多关于它的内容,也没有使用它,所以我不知道它是如何工作的……但是。但根据其网页,它是一个 AOT(Ahead-Of-Time)编译器。这意味着它会将您的 .class 文件编译为系统相关的二进制文件。
你应该试一试,看看它的表现如何。根据该网站,如果您的项目是非商业性质的,您将获得免费许可证。
Java Compiler 将纯文本 Java 代码编译成 JVM 字节码。http://en.wikipedia.org/wiki/Java_bytecode
JVM 有一个 HotSpot 优化器,用于评估“热点”的代码(基本上,将使用最多的代码)并在使用 CPU 缓存时特别注意这些点。它还可以标记这些点,让 JVM 重新编译为本地语言(如汇编),这称为 JIT。
JVM 本质上是一个运行 JVM 字节码解释器的虚拟机。
从来没有直接的.exe。大多数情况下,它是 Windows/C/C++ 的东西。
不,代码没有“编译”成“exe”
程序以字节码的形式存储在内存中,但当前运行的代码段被预先编译为物理机器码,以便运行得更快。
我会说 JIT 是一种解释器,旨在提高常用代码分支的速度(至少这是我 10 年前的解释)
JIT 编译器代表了一种混合方法,与解释器一样,翻译是连续发生的,但会缓存已翻译的代码以最大程度地减少性能下降。它还提供了在开发时优于静态编译代码的其他优势,例如处理后期绑定数据类型和强制执行安全保证的能力。