vai*_*ike 26 multithreading android garbage-collection android-3.0-honeycomb
当我正在研究各种移动平台的共性/差异时,正在研究的一个方面是内存管理.因此,我对各种机制的更详细的技术信息感兴趣.
具体来说,例如Android使用哪种垃圾收集器类型?
([Google Groups Discussion]建议它使用"跟踪"机制 - 但我很欣赏我可以引用的"更官方"来源,并希望在那里找到类型可能对程序员产生影响的信息.
我的问题还在于,Android 3.0(Honeycomb)中的GC是如何被专门调整以利用多个处理器的?
[Android Devevelopers Guide]建议
Android 3.0是该平台的第一个版本,旨在在单核或多核处理器架构上运行.Dalvik VM,Bionic库和其他地方的各种变化增加了对多核环境中对称多处理的支持.这些优化可以使所有应用程序受益,即使是那些单线程的应用程序.例如,如果Dalvik垃圾收集器在第二个核心上运行,则使用两个活动核心,单线程应用程序可能仍会看到性能提升.系统会自动安排."
和以前一样,我宁愿找到一个有更多技术信息的来源来阅读.同样,对开发人员的影响是什么(除了明显可以提高性能之外)?
任何此类输入都表示赞赏.
谢谢!
Seb*_*olm 27
为了回答您的一个问题,Dalvik VM确实使用跟踪垃圾收集器,使用Mark和Sweep方法.
根据Dalvik虚拟机架构:
Dalvik垃圾收集器中的当前策略是保持标记位,或指示特定对象"可到达"的位,因此不应该是垃圾收集,与其他堆内存分开.
从Android 5.0(Lollipop)开始,Dalvik被Android Runtime(ART)取代.
关于从Dalvik到ART (来源)的垃圾收集器的变化,Google有以下说法:
改进垃圾收集
垃圾收集(GC)会影响应用程序的性能,导致显示不稳定,UI响应能力差以及其他问题.ART以多种方式改进垃圾收集:
- 一个GC暂停而不是两个
- 剩余GC暂停期间的并行处理
- 具有较低GC总时间的收集器,用于清理最近分配的短寿命对象的特殊情况
- 改进了垃圾收集人体工程学,使并发垃圾收集更加及时,这使GC_FOR_ALLOC事件在典型用例中极为罕见压缩GC以减少后台内存使用和碎片化
也可以看看: