雪花新闻

了解一下,Android 10中的ART虚拟机(8)

缘起

继续从读书笔记的角度来系统的学习《Advanced Design and Implementation of Virtual Machines》。 这本书是英文编写,全部、认真、深入的读下来非常考验人。 我之前也只是读了60%,而且越到后面越没有耐心。 想了想,JVM在系统层面上要达到一定水准,可能还是得精读一到两本这样的书籍。 记读书笔记是我学习知识和技能的一种比较好的方式,伴随我至少20多年了。 暂且给这次的读书笔记取名“关于VM的理论”。

本篇 介绍第III部分中的:

正式开始本篇之前,我有必要推荐一本书。

推荐一本书 《深入理解Kotlin协程》

有个年轻的小伙伴Benny写了一本《深入理解Kotlin协程》的书。

书封皮最后有我写的推荐语,但很可惜是被阉割过的( 理解出版社编辑的做法 ,他们并不清楚技术人对技术观点,认识上的“反复无常 )。

如何正确看待协程?我个人是有一个相当大的转变的。先看推荐语的原文——

我最开始对kotlin和协程是比较“轻视”的,觉得它们无非是语法糖以及线程相关知识的新坛装旧酒。但随着我对JVM以及近些年来一些现代高级编程语言的深入学习,我突然意识到Kotlin其实远不只是基于Java,它天然就包含很多现代高级语言的特性。而协程在kotlin语言的加持下针对并发编程的痛点上更是进了一大步。很难得Benny能深入撰写一本这样的关于协程方面的论著。这本书并不简单,但值得各位读者深入学习。

其实, 周志明老师在深入理解JVM最新版的书里也提到, 协程 很可能在Java后续版本 得到支持,当然也是JDK里提供的——一个比较类似的例子就是C++11里STL搞了一个并发库一样。

本篇介绍什么

本篇内容见下图,对应原书中的第III部分最后的9到13章。

这几章内容看起来是相对比较痛苦的。痛苦的感觉是不知道讲了什么,不知道有什么用。所以,我们先大概说下这几章讨论的是什么问题。BTW,这几章之间的关联关系并不大,你可以选择感兴趣的阅读。

ART里的各种模块

我把 ART里(以写书的7.0为主)各种比较常见的模块列了下。 相对来说,这些名字取得还是比较达意的,基本一看就能想到是干什么的

但是,你要说这些模块有没有“模块化的设计”?肯定有,也可能没有。什么意思呢?

Soft-Reference对象回收顺序的考虑

关于 Reference, 本文 不打算 说太多基础知识,因为每个搞Java开发的,都自认为了解它。 但正如我在 ART一书第14章14.8节 书里所说 Java Reference 是很多公司面试 Java 开发者 时必问的知识点。 从某种角度来看,这说明大家对 JavaReference 的知识是 即熟悉又陌生。 熟悉它的理由是大部分开发者都能说出几种 Reference 的差别以及各自适合的使用场景,而对它陌生的原因也很简单。 毕竟,我们很少有机会能通过虚拟机的源代码来真正了解 Reference 可以这么说,在没有看到源代码之前,我们只是知其然。 看完源代码后,我们就能做到知其所以然 ”。

相关文章