我发现了一些与我矛盾的关于 Android 垃圾收集器的信息。
Android 开发者指南 说:
Android 3.0 是该平台的第一个版本,旨在在单核或多核处理器架构上运行。Dalvik VM、Bionic 库和其他地方的各种变化增加了对多核环境中对称多处理的支持。这些优化可以使所有应用程序受益,甚至是那些单线程的应用程序。例如,如果有两个活动核心,如果 Dalvik 垃圾收集器在第二个核心上运行,单线程应用程序可能仍会看到性能提升。系统会自动安排。”
好的,现在是另一件事
根据此链接:Dalvik Virtual Machine Architecture android 使用标记和扫描方法。
Dalvik 垃圾收集器中的当前策略是保留标记位,或指示特定对象“可访问”的位,因此不应被垃圾收集,与其他堆内存分开。
如果我们在这个链接上检查标记和清除是如何工作的: 标记和清除垃圾收集算法 ,我们可以看到:
标记和清除方法的主要缺点是正常程序执行在垃圾收集算法运行时被挂起。特别是,在与人类用户交互或必须满足实时执行约束的程序中,这可能是一个问题。例如,使用标记和清除垃圾收集的交互式应用程序会周期性地无响应。
所以我现在的问题是,它是如何真正起作用的?垃圾收集器会在他工作时暂停一切,还是能够完全独立于其他活动处理器内核运行?