The Common Language Runtime (CLR) is the execution engine for .NET Framework applications (Similar to JVM in Java). CLR is primarily responsible for code execution of the program. It provides a number of services, including the following:
a) Code management (loading and execution)
b) Application memory isolation.
c) Version control.
d) Garbage collection
e) Enforcement of code access security.
f) Exception handling, including cross-language exceptions
g) Interoperation between managed code. etc.
The JIT Compiler is responsible for converting the IL codes to machine executable codes. It is called just in time, as it compiles on demand. Once it has compiled a part of IL code to machine code, it stores the memory address of that part within itself so that it will not recompile again.
Thanks & Regards
Microsoft MVP (ASP.Net/IIS)