“java.compiler”系统属性的可能值

时间:2013-11-26 21:52:11

标签: java jit jvm-arguments

(我知道这可能是重复的,但几乎不可能在Google或SO上搜索此主题。)

我知道java.compiler系统属性可以使用“NONE”来禁用JIT编译器,但我对其他值以及它们的性能特征感兴趣。

3 个答案:

答案 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