是否有任何内置垃圾收集的编译语言?
根据我的理解,解释器或JVM的目的是使二进制平台独立.是不是因为GC?或者在编译代码中是否可以使用GC?
正如您正确指出的那样,虚拟机主要用于抽象出基础平台的依赖于机器的属性.垃圾收集是一种正交技术.通常它不是一种语言必需的,但被认为是运行时环境的理想属性.确实存在具有基元的语言来分配存储器(例如,new
在Java和C#中)但没有基元来释放它.它们可以被认为是内置GC的语言.
其中一种编程语言是Eiffel.大多数Eiffel编译器出于可移植性的原因生成C代码.此C代码用于通过标准C编译器生成机器代码.Eiffel实现为此编译代码提供GC(有时甚至是准确的GC),并且不需要VM.特别是,VisualEiffel编译器直接使用完整的GC支持生成本机x86机器代码.
SML,OCaml,Eiffel,D,Go和Haskell都是具有垃圾收集的静态类型语言,通常是提前编译到本机代码.