The "-client" mode will use the JIT compiler originally developed by Apple -- and it does a straight to native upon the class load. It is great for relatively short lived programs.
The "-server" mode will use the JIT compiler developed by Sun -- and it actually uses the interpreter initially. During this phase, it will gather statistics. After a while, it will do a very optimized JIT compilation based on the data gathered during the interpreter phase. This is, of course, great for really long lived programs.
There is also a "-tiered" mode, developed by Azul, only for the Azul JVM, but I believe that it is being donated to the Open JDK (I think). With that mode, it will use a modified "-client" JIT initially (that also gathers statistics), and then use a "-server" JIT later when it has enough stats to do an optimized compilation. Arguably great for both short and long lived programs.
The "-server" mode will use the JIT compiler developed by Sun -- and it actually uses the interpreter initially. During this phase, it will gather statistics. After a while, it will do a very optimized JIT compilation based on the data gathered during the interpreter phase. This is, of course, great for really long lived programs.
There is also a "-tiered" mode, developed by Azul, only for the Azul JVM, but I believe that it is being donated to the Open JDK (I think). With that mode, it will use a modified "-client" JIT initially (that also gathers statistics), and then use a "-server" JIT later when it has enough stats to do an optimized compilation. Arguably great for both short and long lived programs.
No comments:
Post a Comment