2

只是想让它100%清楚。

Android OS 使用 2 种 GC 算法 - Mark&Sweep 和 Concurrent Mark&Sweep。

在 2.3 之前没有并发算法——只有串行算法。

Serial Mark&Sweep - 是一种压缩算法,只适用于年轻一代。

CMS 适用于两代(Yong 和 Old),它不压缩,只使用空闲列表。此外,Android 中没有 PermGen 空间。一般来说,CMS 与 Old generation 一起工作,因为 Young 已经被串行算法清除。

我对吗 ?:)

4

1 回答 1

3

Android 5.0之前,没有compacting GC,Dalvik VM只实现了Mark&Sweep GC(并且可以并发,所以你的说法不准确,CMS也是Mark&Sweep GC)和Copying GC,根据不同情况分别使用(抱歉,我不太了解何时使用哪种算法)。

Android 5.0 ART 引入了 3种compacting GC:Semi-Space(SS)GC、Generational Semi-Space(GSS)GC 和 Mark&Compact GC(MC)。由于 compacting GC 的效率不如 Mark&Sweep,但可以处理后者的内存碎片不能,compacting GC 用作后台 GC,而 Mark&Sweep 用作前台 GC

于 2015-11-05T06:18:17.103 回答