android虚拟机运行gc,Android 虚拟机 | 垃圾回收机制

04831a88902c

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

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

目录

前置知识

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

1. Java 垃圾回收机制回顾

1.1 垃圾回收管理的区域

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

堆: 垃圾对象;

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

1.2 分代收集模型

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

04831a88902c

—— 图片引用自网络

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

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

1.3 并发回收

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

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

04831a88902c

2. Dalvik 上的垃圾回收

3. ART 上的垃圾回收

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

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

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

参考资料

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

04831a88902c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值