如何知道方法是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”一词已过期至少十年。     

要回复问题请先登录注册