日期:2014-05-20  浏览次数:20730 次

.net framework的程序总是用JIT方式执行吗? 有没有解释执行的情况?
Java程序默认是jvm解释执行字节码。.net framework的程序呢? 是总要JIT执行? 还是可以解释执行?

Debug一个C#程序的时候,也是JIT之后的debug版本呢,还是解释执行的?

------解决方案--------------------
引用:
Quote: 引用:

没办法解释执行。


我的印象里,java默认是解释执行,也可以强制jvm做JIT。

你的意思是,.net必然是先GIT编译再本地运行的?


实际上,解释执行和编译执行没有什么严格的区别,你可以理解为解释执行是按照IL指令为最小单位的编译,而编译执行是按照方法为最小单位的解释。

严格来说,并不是所有的C#代码都会变成IL,并且由JIT编译执行。一个例子就是LINQ的查询表达式。虽然可能你觉得这是一个特例,但是我想告诉你的是,在未来的.NET框架中,可能这会成为一种常态:开发者有机会将更多的代码留到运行期间处理,因此解释和编译的边界变得模糊了。

但是目前的CLR,没有按照单条指令的粒度的“解释执行”的机制,这和Java不同。我想原因很简单,和Java相比,.NET虽然也被设计成跨平台的,但是更少有需求必须通过解释执行去适配更多目标机器。