Android Runtime(ART) 是虚拟机?

Android Runtime(ART) is virtual machine?

不知ART是不是虚拟机。 dex2oat 将 dalvik 字节代码编译成本机(特定于平台)代码,即 elf 文件。所以正如 android 开发者文章中提到的,它仍然有垃圾收集器。我不明白它是如何工作的,我们有本地编译的elf文件,但它仍然在虚拟机环境中运行? GC 在这种情况下如何工作? 请提供一个很好的参考来阅读这个或者请解释这个。 提前致谢。

GC 只是一种内存管理方式。在任何 Java VM 中,GC 都是负责内存分配和垃圾收集的实体。当您分配一个对象时,GC 检查可用内存并在没有可用内存时收集垃圾 space。您可以使用 C 或 C++ 等本地语言实现相同的算法。因此,将 java 编译为字节码然后字节码调用 GC 并且 GC 在 JVM 中运行或者将 java 编译为本机代码并使用 GC link 都没有关系,这可能是共享库。有一个来自 Miriad Group(前 Esmertec)的虚拟机,它在 ART 之前就这样做了,但对于 Java ME