如何解决如何知道方法是JIT还是解释
| 据我了解,没有明确的规则来确定Java方法是在调用时被JIT还是解释。 因此,有什么方法可以告诉JVM我需要某种JIT方法。并且有一种方法可以肯定地知道哪种方法将被JIT,哪些不是。解决方法
据我所知,您(从JVM内部)不知道并且无法强制执行JIT方法,但是使用
-XX:+PrintCompilation
JVM参数,您可以观察JIT编译器的工作情况并检查是否有方法是否在该程序的特定运行中被JIT。
, 因此,有什么方法可以告诉JVM我需要某种JIT方法。
不,哪种方法是“ JITed”而不是您自己决定的,实际上,不能保证任何方法都会被JITed。我建议您将这些决定留给JVM。
, 并且有一种方法可以确定
哪种方法将准时使用,哪种方法将
不。
(Oracle)Sun JVM称为HotSpot,这意味着它将查看最常调用的方法,从而将其称为“ hot”,并且这些方法是第一个被编译的方法。因此,某些方法可能永远不会被编译。但是,如果您知道该方法被称为很多,则很可能已对其进行了编译。您可以使用“ 1”个VM选项设置阈值,该选项指定考虑方法“ hot”所需的调用次数。
我不知道有什么方法可以检查当前代码是否以解释或编译模式运行。 VM崩溃日志显示了堆栈跟踪中的哪些方法被解释或编译,也许有某种方法可以在运行时获取它。
,有一种方法可以让jvm编译一个类,它不能保证做任何事情,但是可以在任何具有jit的jvm上工作。
Compiler.compileClass(MyClass.class);
,您无法分辨,除非有HotSpot中的错误,否则没有任何区别。 “ JIT”一词已过期至少十年。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。