我想知道ART是否是虚拟机。 dex2oat将dalvik字节代码编译为本机(特定于平台)代码,elf文件。正如android开发者文章中提到的,它仍然有垃圾收集器。我不明白它是如何工作的,我们有本机编译的elf文件,但它仍然在虚拟机环境中运行? GC在这种情况下如何工作? 请提供一个很好的参考资料,或者请解释一下。 提前谢谢。
答案 0 :(得分:2)
GC只是内存管理的一种方式。在任何Java VM中,GC都是负责内存分配和垃圾收集的实体。当你分配一个对象GC检查可用内存并在没有可用空间时收集垃圾。您可以使用C或C ++等本机语言实现相同的算法。因此,如果将java编译为字节码然后字节码调用GC和GC在JVM内部运行或者将java编译为本机代码并将其与GC(可能是共享库)链接起来并不重要。来自Miriad Group(前Esmertec)的一台虚拟机在ART之前做过,但对于Java ME来说