【发布时间】:2011-09-27 16:27:33
【问题描述】:
我已经看到了一些关于“托管”代码含义的解释,其中一些针对将托管代码编译为中间语言和 JITed 的想法,而另一些则讨论了 GC 和内存管理。哪个实际上使一种语言受管理,还是两者兼而有之?
GC 的答案很有意义,因为内存是托管的(因此称为“托管代码”),但假设不可能有一种具有 GC 的语言但是本机的(未编译为 IL)。 GC 和 IL 代码是否以某种方式紧密耦合?
【问题讨论】:
-
JIT 编译器的存在是一个实现细节(它与运行程序的语义无关,可能在 JIT 中保存未定义的行为和错误)。 技术上,这同样适用于将代码编译为字节码还是原生代码,尽管它在实现的生命周期内发生变化的可能性要小得多,而且对于许多语言来说,在大多数或所有实现之间甚至是一致的.
标签: c# memory-management garbage-collection managed il