美文网首页每天进步一点点
Android 虚拟机 | 垃圾回收机制

Android 虚拟机 | 垃圾回收机制

作者: 彭旭锐 | 来源:发表于2021-01-24 19:16 被阅读0次

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

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


目录


前置知识

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


1. Java 垃圾回收机制回顾

1.1 垃圾回收管理的区域

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

  • 堆: 垃圾对象;

  • 方法区: 废弃的常量和不再使用的类型。

1.2 分代收集模型

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

—— 图片引用自网络

  • 1、新生代: 新生代中的对象存活率低,只要付出少量的赋值成本就能完成回收过程,因此选用复制算法;

  • 2、老生代: 老生代中的对象存活率高,并且没有额外空间进行分配担保,因此选用 “标记 - 清理” 或 “标记 - 整理” 算法。

1.3 并发回收

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

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

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


2. Dalvik 上的垃圾回收


3. ART 上的垃圾回收

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

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

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


参考资料


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

相关文章

  • 简单分析Android的垃圾回收与内存泄露

    Android系统是运行在Java虚拟机上的,作为嵌入式设备,内存往往非常有限,了解Android的垃圾回收机制,...

  • 简析Android的垃圾回收与内存泄露

    Android系统是运行在Java虚拟机上的,作为嵌入式设备,内存往往非常有限,了解Android的垃圾回收机制,...

  • 浅谈 Recycle 机制

    这里的 Recycle 机制并不是指 Java 虚拟机中的垃圾回收机制,而是 Android 框架里十分常用的一种...

  • Android 垃圾回收黑科技

    今天,我们来学习下 Android 中的垃圾回收机制。 大家应该知道,JVM 和 Dalvik 的垃圾回收机制实际...

  • 2021-09-24

    Android深度性能优化--内存优化 一、背景 在内存管理上,JVM拥有垃圾内存回收的机制,自身会在虚拟机层面自...

  • Android知识大纲

    Android知识大纲 Java垃圾回收机制 Java内存是如何划分的,Java语言为什么要使用垃圾回收机制? 垃...

  • JVM怎么判断对象是否已死?

    Java虚拟机中有着垃圾回收机制,自动帮我们回收对象,不需要自己手动实现垃圾回收。那么JVM中的垃圾收集器是如何判...

  • 对象是否已死?看看JVM是怎么判断的

    Java虚拟机中有着垃圾回收机制,自动帮我们回收对象,不需要自己手动实现垃圾回收。那么JVM中的垃圾收集器是如何判...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • Java垃圾回收

    本文主要摘自《深入理解Java虚拟机》,内容较多,尽量全面概括了 Java 垃圾回收机制、垃圾回收器以及内存分配策...

网友评论

    本文标题:Android 虚拟机 | 垃圾回收机制

    本文链接:https://www.haomeiwen.com/subject/vpqkzktx.html