Dra*_*ag0 11 performance android garbage-collection
我发现了一些关于Android垃圾收集器的信息,这些信息与我相矛盾.
Android Devevelopers指南说:
Android 3.0是该平台的第一个版本,旨在在单核或多核处理器架构上运行.Dalvik VM,Bionic库和其他地方的各种变化增加了对多核环境中对称多处理的支持.这些优化可以使所有应用程序受益,即使是那些单线程的应用程序.例如,如果Dalvik垃圾收集器在第二个核心上运行,则使用两个活动核心,单线程应用程序可能仍会看到性能提升.系统会自动安排."
好的,现在另一件事
根据这个链接:Dalvik虚拟机架构 android使用标记和扫描aproach.
Dalvik垃圾收集器中的当前策略是保持标记位,或指示特定对象"可到达"的位,因此不应该是垃圾收集,与其他堆内存分开.
如果我们检查标记和扫描如何在此链接上工作: 标记和扫描垃圾收集算法 ,我们可以看到:
标记和清除方法的主要缺点是在垃圾收集算法运行时正常程序执行被暂停.特别是,这可能是与人类用户交互或必须满足实时执行约束的程序中的问题.例如,使用标记和清除垃圾收集的交互式应用程序会定期无响应.
所以现在我的问题是,它是如何运作的?垃圾收集器在工作时是否会暂停一切,或者是否能够完全独立于其他活动处理器核心运行?
Ale*_*leš 11
Gingerbread及更高版本中的Dalvik VM 使用Mostly Concurrent部分收集垃圾收集器,暂停时间通常约为5毫秒.因此,是的,GC通过阻止它们影响其他应用程序,但并发GC算法能够最小化这些暂停.
你应该看看:
一般来说,垃圾收集理论[垃圾收集维基]解释说:
Stop-the-world垃圾收集器完全停止执行程序以运行收集周期
增量和并发垃圾收集器旨在通过将其工作与主程序中的活动交错来减少这种中断.增量垃圾收集器在离散阶段执行垃圾收集循环,每个阶段之间允许程序执行(有时在某些阶段).
| 归档时间: |
|
| 查看次数: |
4090 次 |
| 最近记录: |