5

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

4

1 回答 1

2

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

于 2015-01-07T22:30:43.580 回答