CLR再也没有翻译过已经解释过的代码

时间:2013-12-06 14:21:39

标签: .net clr

阅读一些书和作者提到CLR和解释器之间最大的区别是CLR从未翻译过两次相同的IL段。它将在后续调用中重用它。

我想知道CLR是否会在程序退出后保留这个IL翻译?如果CLR只是将翻译保留在应用程序的运行中,我会说一些优化的解释器也会做同样的事情。

1 个答案:

答案 0 :(得分:1)

IL只会被使用一次,它发生在Just-in-time编译器将其转换为机器代码时,恰好在方法开始执行之前。卸载AppDomain时,会再次抛弃生成的代码。这通常在程序退出时发生。

保持生成的代码以便永远不必再次翻译,这也是ngen.exe的工作。