每天进步一点点

Android 虚拟机 | 垃圾回收机制

2021-01-24  本文已影响0人  彭旭锐

点赞关注,不再迷路,你的支持对我意义重大!

🔥 Hi,我是丑丑。本文 「Android 路线」| 导读 —— 从零到无穷大 已收录,这里有 Android 进阶成长路线笔记 & 博客,欢迎跟着彭丑丑一起成长。(联系方式在 GitHub)


目录


前置知识

这篇文章的内容会涉及以下前置 / 相关知识,贴心的我都帮你准备好了,请享用~


1. Java 垃圾回收机制回顾

1.1 垃圾回收管理的区域

并不是 Java 虚拟机管理的所有区域都需要垃圾回收,线程独占的区域会随着线程结束而销毁,不需要垃圾回收。因此垃圾回收机制需要管理的区域是:

1.2 分代收集模型

在实践中,当代绝大多数垃圾收集器都采用了 “分代收集模型”

—— 图片引用自网络

1.3 并发回收

在标准的垃圾回收算法中,在垃圾回收线程进行标记 - 清理 / 整理 / 复制的过程中需要 stop-the-world,这是为了保证能够彻底清理所有垃圾对象。但是这种做法却会导致虚拟机的吞吐量降低。

在追求响应速度的系统上,希望垃圾收集器暂停时间尽可能小,为此发展出了允许回收线程与用户线程并发运行的垃圾收集器 —— CMS(并发标记清除)。主要工作过程分为 4 个步骤:

更多内容:Java 垃圾回收: Java 虚拟机 | 垃圾回收机制


2. Dalvik 上的垃圾回收


3. ART 上的垃圾回收

4. Dalvik 和 ART 虚拟机的垃圾回收方法

Dalvik与ART虚拟机的GC调试日志

JVM怎么保证gc效率跟线程运行效率的 ?


参考资料


创作不易,你的「三连」是丑丑最大的动力,我们下次见!

上一篇 下一篇

猜你喜欢

热点阅读