垃圾收集实现 java实现语言垃圾回收算法。我想C,请确认,< P> >,主要是用C++和汇编语言实现Sun JVM,所以我猜GC是用C++实现的。< /P> < P>可以用任何语言实现,但是Sun的热点是用C/C++和汇编编写的。 另见

垃圾收集实现 java实现语言垃圾回收算法。我想C,请确认,< P> >,主要是用C++和汇编语言实现Sun JVM,所以我猜GC是用C++实现的。< /P> < P>可以用任何语言实现,但是Sun的热点是用C/C++和汇编编写的。 另见,java,garbage-collection,jvm,Java,Garbage Collection,Jvm,到目前为止,HotSpot代码库已经有几十人在10年的时间里完成了工作。(这是好的和坏的。)它很大。有近1500个C/C++头文件和源文件,包括近250000行代码。除了预期的类加载器、字节码解释器和支持的运行时例程之外,您还可以获得两个从字节码到本机指令的运行时编译器、3个(大约)垃圾收集器和一组用于同步的高性能运行时库等 如果您想查看源代码,请下载源代码。警告:这不容易理解,在JVM中有很多非常复杂的垃圾收集算法。 < P>作为一个例子,我的观点是,不是所有的java VM都是C++实现的

到目前为止,HotSpot代码库已经有几十人在10年的时间里完成了工作。(这是好的和坏的。)它很大。有近1500个C/C++头文件和源文件,包括近250000行代码。除了预期的类加载器、字节码解释器和支持的运行时例程之外,您还可以获得两个从字节码到本机指令的运行时编译器、3个(大约)垃圾收集器和一组用于同步的高性能运行时库等


如果您想查看源代码,请下载源代码。警告:这不容易理解,在JVM中有很多非常复杂的垃圾收集算法。

< P>作为一个例子,我的观点是,不是所有的java VM都是C++实现的,考虑一下,它是元循环。它完全是用Java实现的。代码的最小引导部分是用C编写的,但VM的其余部分(包括内存管理(MMTk))完全是用Java编写的。

这取决于JVM。通常,垃圾收集器是用与JVM相同的语言实现的,但情况并非总是如此

在Maxine中,JVM和垃圾收集器都是用Java实现的

在Jikes中,JVM和垃圾收集器都是用Java实现的

在Rava中,JVM是用Ruby实现的,而垃圾收集器根本没有实现:Ruby已经是一种内存管理语言,不需要实现单独的垃圾收集器

在IKVM中,JVM在C#和CIL中实现,而垃圾收集器根本没有实现:CLIVES已经是一个内存管理的环境,不需要实现单独的垃圾收集器

在VisualAgeforJava中,Java字节码被转换为Smalltalk字节码,然后由Smalltalk环境执行。Smalltalk已经是一种内存管理语言,不需要实现单独的垃圾收集器

在VMKit中,VM和垃圾回收器都是用C++编写的。
在热点中,JVM和所有4个(或目前很多)都是用C++编写的java垃圾收集器。VM进行垃圾收集,但Java VM有多种实现。为了得到一个好的答案,你必须更具体地说明你指的是哪一个。