In computing, just-in-time compilation (JIT), also known as dynamic translation, is a method to improve the runtime performance of computer programs based on byte code (virtual machine code). Since byte code is interpreted it executes more slowly than compiled machine code, unless it is actually compiled to machine code, which could be performed before the execution – making the program loading slow – or during the execution. In this latter case – which is the basis for JIT compilation – the program is stored in memory as byte code, but the code segment currently running is preparatively compiled to physical machine code in order to run faster.
JIT compilers represent a hybrid approach, with translation occurring continuously, as with interpreters, but with caching of translated code to minimize performance degradation. It also offers other advantages over statically compiled code at development time, such as handling of late-bound data types and the ability to enforce security guarantees.
JIT builds upon two earlier ideas in run-time environments: bytecode compilation and dynamic compilation. It converts code at runtime prior to executing it natively, for example bytecode into native machine code.
Several modern runtime environments, such as Microsoft's .NET Framework and most implementations of Java, rely on JIT compilation for high-speed code execution.
JIT is incompatible with the mprotect feature of PAX included with the Linux Grsecurity kernel patch as well as preventing the application of true memory randomisation on OpenBSD.
Read more about Just-in-time Compilation: Overview, Startup Delay and Optimizations, History
Famous quotes containing the word compilation:
“The United States Constitution has proved itself the most marvelously elastic compilation of rules of government ever written.”
—Franklin D. Roosevelt (18821945)