Android Runtime(ART)是虚拟机吗?

atz*_*jhu 5 android dalvik android-runtime vm-implementation

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

mis*_*hru 2

GC只是内存管理的一种方式。在任何 Java VM 中,GC 都是负责内存分配和垃圾收集的实体。当您分配对象时,GC 检查可用内存,如果没有可用空间,则收集垃​​圾。您可以用 C 或 C++ 等本地语言实现相同的算法。因此,如果你将java编译为字节码,然后字节码调用GC并且GC在JVM内部运行,或者你将java编译为本机代码并将其与GC(可能是共享库)链接,这并不重要。Miriad Group(前 Esmertec)有一个 VM,它在 ART 之前就已完成此操作,但适用于 Java ME