Android垃圾收集器的技术细节
当我在研究各种移动平台的共性/差异时,正在研究的一个方面是内存管理。因此,我对各种机制的更详细的技术信息感兴趣 具体来说,例如安卓使用哪种垃圾收集器类型?Android垃圾收集器的技术细节,android,multithreading,garbage-collection,android-3.0-honeycomb,Android,Multithreading,Garbage Collection,Android 3.0 Honeycomb,当我在研究各种移动平台的共性/差异时,正在研究的一个方面是内存管理。因此,我对各种机制的更详细的技术信息感兴趣 具体来说,例如安卓使用哪种垃圾收集器类型? (表明它使用的是“跟踪”机制——但我希望能引用一个“更正式”的源代码,并希望在那里找到该类型可能对程序员有影响的信息) 我的问题之一是,安卓3.0(蜂巢)中的GC是如何专门调整以利用多处理器的? [Android开发者指南]建议 Android 3.0是该平台的第一个版本,设计用于单核或多核处理器架构。Dalvik VM、Bionic库和其他
(表明它使用的是“跟踪”机制——但我希望能引用一个“更正式”的源代码,并希望在那里找到该类型可能对程序员有影响的信息) 我的问题之一是,安卓3.0(蜂巢)中的GC是如何专门调整以利用多处理器的?
[Android开发者指南]建议 Android 3.0是该平台的第一个版本,设计用于单核或多核处理器架构。Dalvik VM、Bionic库和其他地方的各种更改增加了对多核环境中对称多处理的支持。这些优化可以使所有应用程序受益,即使是那些单线程的应用程序。例如,对于两个活动内核,如果Dalvik垃圾收集器在第二个内核上运行,则单线程应用程序可能仍然会看到性能提升。系统将自动对此进行安排。” 和以前一样,我宁愿找一个有更多技术信息的来源来阅读。同样,这对开发人员有什么影响(除了明显希望提高性能之外) 任何这样的投入都是值得赞赏的
谢谢!为了回答您的一个问题,确实使用了跟踪垃圾收集器,使用了一种方法 根据: Dalvik垃圾收集器的当前策略是保留标记位, 或表示特定对象“可访问”的位,以及 因此,不应将其与其他堆内存分开进行垃圾收集 从Android 5.0(棒棒糖)开始,Dalvik被替换为 关于垃圾收集器从Dalvik到ART()的变化,Google有如下说法: 改进的垃圾收集 垃圾收集(GC)会影响应用程序的性能,导致 显示不稳定、UI响应性差以及其他问题 通过以下几种方式改进垃圾收集:
- 一次GC暂停而不是两次
- 剩余GC暂停期间的并行处理
- 收集器具有较低的总GC时间,用于清理最近分配的短期对象的特殊情况
- 改进的垃圾收集工效学,使并发垃圾收集更加及时,这使得GC_FOR_ALLOC事件变得极其复杂 在典型用例中很少见 压缩GC以减少后台内存使用和碎片