我发现关于Android的垃圾收集器是矛盾,我的一些信息。
Android的Devevelopers指南说:
Android 3.0的是设计成在单个或多核处理器架构运行平台的第一个版本。 各种各样的Dalvik虚拟机变化,仿生库,和其他地方的增加对多核环境中支持对称多处理。 这些优化可以惠及所有的应用程序,即使是那些单线程的。 例如,有两个活动核心,单线程应用程序可能仍然会看到一个性能提升,如果在Dalvik垃圾收集器在第二个内核上运行。 系统会自动安排这个“。
好了,现在其他的事情
根据此链接: 在Dalvik虚拟机架构 Android使用标记和清除的形式给出。
在Dalvik的垃圾收集器的当前策略是保持标记比特,或指示特定对象是“可达”的位,并因此不应被垃圾收集,从其他堆内存分开。
如果我们检查标记和清除是如何工作的此链接: 标记和清扫垃圾收集算法 ,我们可以看到这一点:
标记和清除方法的主要缺点是,虽然垃圾收集算法运行正常的程序执行暂停的事实。 特别地,这可以是在程序中的问题,即与人类用户交互或必须满足实时执行约束。 例如,使用标记 - 清除垃圾收集的交互式应用程序变得无法响应周期性。
所以,我现在的问题是,它是如何真的有效吗? 垃圾回收器暂停一切,而他的工作,或者是他能够运行完全独立于其他活动的处理器核心的?