21.05.2018, 22:50 | #9 |
Участник
|
Про JRebel - тут интерпретация похоже совсем не причем. Причем тут возхможность встроиться в загрузчик:
https://www.quora.com/How-does-JRebel-work JRebel leverages the JVM's built-in instrumentation and hot swap to redefine the core libraries and to add an extra field to each object to make it appear as if the JVM is doing something it can't do.
При этом, насколько я понял, с JIT ничего не делается - компиляция не отменяется. То есть вместо внутренних эффективных структур в байткод встраиваются мэпы. За счет этого можно как-то менять и одновременно тормоза. Все дело в структуре данных и ссылках, а не в компиляторе или интерпретаторе. Про tiered compilation - интересная статья про то, как там устроено внутри - фичу практически сделали, но вместо интерпретатора там неоптимизированный JIT в качестве первого звена. См Why not ‘Interpreted’? и Why not LLVM? в конце статьи. |
|