垃圾收集实施

时间:2010-06-01 07:13:24

标签: java garbage-collection jvm

为java.i实现c语言垃圾收集算法c,请确认?

5 个答案:

答案 0 :(得分:8)

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

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

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

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

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

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

在VMKit中,VM和垃圾收集器都是用C ++编写的。

在HotSpot中,JVM和所有4个(或者当前有许多)垃圾收集器都是用C ++编写的。

答案 1 :(得分:7)

JVM可以用任何语言实现,但Sun的HotSpot是用C / C ++和汇编语言编写的。

另见

答案 2 :(得分:3)

AFAIK Sun JVM主要是用C ++和汇编程序实现的,所以我猜测GC是用C ++实现的。

答案 3 :(得分:2)

作为我的观点的一个例子,并非所有Java VM都是用C ++实现的,请考虑Jikes,这是元循环。它完全用Java实现。代码的最小引导部分是用C语言编写的,但VM的其余部分 - 包括内存管理(MMTk) - 完全用Java编写。

答案 4 :(得分:1)