AOT仪器是什么意思?

Ali*_*adi 4 java instrumentation bytecode quasar jvm-bytecode

我知道字节码检测是什么。它只是在运行时更改 .class 文件字节码,这似乎自 JDK 1.5 以来可用。但是,据说是在类加载期间而不是在运行时。

现在我的问题是,什么是 AOT 或 Ahead of Time 仪器?什么是相反的程序?随着时间的推移仪器?

检测您的代码
Quasar 光纤依赖于字节码检测。这可以在类加载时通过 完成Java Agent,或者在编译时使用 Ant 任务完成。

运行检测
Java 代理Quasar的轻量级线程实现依赖于字节码检测。检测可以在编译时(详见下文)或运行时使用 Java 代理执行。要运行 Java 代理,必须将以下内容添加到 java 命令行(或使用您喜欢的构建工具将其添加为 JVM 参数):

-javaagent:path-to-quasar-jar.jar

提前 (AOT)
检测 使用 Quasar 检测程序的简单且可取的方法是使用 Java 代理,它在运行时检测代码。然而,有时运行 Java 代理不是一种选择。

Quasar 通过 Ant 任务支持 AOT 检测。该任务位于 co.paralleluniverse.fibers.instrument.InstrumentationTaskquasar-core.jar,它接受要检测的类文件集。并不是所有的类都会被实际检测——只有那些带有 suspendable methods(见下文)的类——所以只需将程序中的所有类文件交给任务即可。事实上,Quasar 本身是 提前检测的

来源

Pol*_*ome 6

提前 (AOT) 编译/检测就是这样,它发生在运行程序之前。

AOT 的反面是 Just-in-time,或 JIT。它发生在运行时。在 Java 中,类加载是在运行时完成,并且有一些机制可以处理它。

在您的示例中,AOT 检测是在运行程序之前通过 Ant 任务完成的,并将更改写入.class文件。

另一种可能的方法是使用 Java 代理进行 JIT。在这种情况下,检测在类加载时在运行时进行,结果不会写入文件,而是每次加载类时都必须重新完成。

有关更多信息,请参阅Wikipedia/Ahead-of-time-compilationWikipedia/Just-in-time-compilation