我发现了一些关于Android垃圾收集器的信息,这些信息对我来说是矛盾的。Android垃圾收集器在运行时是否暂停其他应用程序?
的Android Devevelopers指南说:
Android 3.0的设计是对 无论是单核或多核处理器架构上运行的平台的第一个版本。 Dalvik虚拟机,仿生库和其他地方的各种 更改为多核环境中的对称多处理添加支持 。这些优化可以使所有应用程序都受益,即使那些单线程的应用程序也可以使用 。例如,对于两个活动核心,如果Dalvik垃圾收集器在第二个核心上运行,单线程 应用程序仍可能会看到性能提升。该系统将安排这 自动“
好了,现在其他的事情
根据此链接:The Dalvik Virtual Machine Architecture Android使用标志和清除的形式给出
目前的策略。 Dalvik垃圾收集器将保留标记 位或指示特定对象为 “可到达”并因此不应被垃圾收集的位,单独的来自其他堆内存的。
如果我们检查标记和清除是如何工作的此链接: Mark and Sweep Garbage Collection Algorithm ,我们可以看到这一点:
标记和清除方法的主要缺点是, 那当垃圾收集算法运行时,正常程序执行被暂停。特别是,这可能是与人工用户交互或必须满足实时执行约束的 程序中的问题。例如,使用标记和扫描垃圾回收的交互式应用程序 将周期性地变为无响应。
所以我现在的问题是,它是如何工作的?垃圾收集器在工作时是否暂停一切,还是他能够在另一个活动处理器内核上完全独立运行?