【发布时间】:2012-02-26 21:37:21
【问题描述】:
我想知道如何检查 JIT 编译器是否已关闭。我有以下代码用于关闭 JIT 编译器。问题是,我不确定它是否真的在这样做。所以我想知道是否有办法检查 JIT 是否关闭。
我查看了 Compiler 类,但没有像 isDisabled/enabled() 这样的方法。
代码:
Compiler.disable();
任何帮助或指导将不胜感激。
【问题讨论】:
-
你想在runtime检查这个吗?
-
是的,我想在运行时检查它。
-
也许我还应该补充一下我这样做的原因。基本上,我们有一个程序,旨在根据数据的大小计算运行算法(例如快速排序)所需的时间。我们注意到,与其他结果相比,前两次确实存在偏差,我们认为这是由于 JIT 编译器的初始化造成的。因此,我们希望看到 JIT 关闭时对时间的影响。
-
这不是一个真正的布尔值,方法在不同的层中得到优化和去优化。最好使用支持热身的基准线束。我会使用JMH。它甚至还有编译器控制注解。
-
在运行时检查的另一个原因是,我有一个应用程序似乎在某个时间点后切换到仅解释模式。我找到了一个似乎相关的 JIT 错误 (bugs.java.com/bugdatabase/view_bug.do?bug_id=8023983)。我想知道是否有什么东西“破坏”了记忆并覆盖了那个标志。
标签: java compiler-construction jit