(我知道这可能是重复的,但几乎不可能在Google或SO上搜索此主题。)
我知道java.compiler
系统属性可以使用“NONE
”来禁用JIT编译器,但我对其他值以及它们的性能特征感兴趣。
答案 0 :(得分:4)
java.compiler
属性是支持java本机编译器的库的名称:
提供Compiler类以支持Java到本机代码 编译器和相关服务。按照设计,Compiler类可以 没有;它充当JIT编译器实现的占位符。 当Java虚拟机首次启动时,它确定是否 系统属性java.compiler存在。 (系统属性是 可以通过System.getProperty(String)和 System.getProperty(String,String)。如果是这样,则假定为 库的名称(具有与平台相关的确切位置和类型); 调用System.loadLibrary(java.lang.String)来加载该库。 如果此加载成功,则命名为该函数 调用该库中的java_lang_Compiler_start()。
答案 1 :(得分:3)
在早期,我认为外部供应商之间存在竞争,以提供此属性命名的外部.dll / .so。 symcjit.dll
是我见过的唯一一个。随着Hotspot的出现,我相信它已经过时了。
答案 2 :(得分:1)
如果您使用的是 Oracle 发布的 JVM,则应检查属性 sun.management.compiler
。可能的值为 HotSpot 64-Bit Tiered Compilers
。
你可以通过输入以下命令来获得这个
java -server -XshowSettings -version 2>&1 | grep sun.management.compiler
如果您使用的是 IBM 发布的 J9 VM,则可能的值为 jitc
。见this document。