JVM 虚拟机介绍
如何学习 JVM?
JVM 的学习要反客为主,站在设计者的角度多去想想,为什么要这么划分?带来了什么好处?才能做到学以致用。
- 比如,内存区域为什么这么划分?线程私有和共享怎么理解?
- 比如,垃圾收集这么多算法和实现,适合什么场景?
- 比如,在发生内存溢出或者性能相关问题时,我应该 dump 内存去关注哪部分?是大对象太多占据了老年代?还是因为太多朝生夕死的对象占据了新生代?是直接内存引起的溢出吗?有什么解决措施吗?
- 类加载为什么要用双亲委派模型,是出于什么考虑呢?
一切的答案,尽在下面的资料中:
摆脱枯燥的文字,一起动起来?
用动画的形式呈现JVM内存结构、GC、DVM、ART的区别,让你印象更深刻。
考虑到视频学习的方式比较低效,所以我很少把视频类的列入图谱库,但是在 易懂和直观 方面,视频又有着无可比拟的优越性,所以我列在这里,帮助你先快速入门。By the way,发现 up 主讲解分区结构的方式,是用一行行源码来对应结构区,和我的动画项目 AndroidPrincipleAnimation 非常相似,令人惊喜!看来转换个角度,模拟如何教别人来教自己,就会发现更有趣更好玩的学习方式!有更有成效的学习方式,欢迎大家提个 issues 告诉我。
资料
《深入理解Java虚拟机》(第2版)周志明著
JVM入门必读,作者功力极好,深入浅出,其中还穿插着经验、技巧、案例、实战,强烈推荐!
阅读这本书时,要有舍有得,避免拘泥于某处,我们可以先从宏观去理解去阅读,再慢慢深入细节。比如看“类文件结构”这一章,先知道类文件结构都有什么,有魔数、Class文件版本、常量池等,然后再去看魔数是什么,Class文件版本在哪里,常量池是什么?再深入下去,常量池有字面量和符号引用,再慢慢深入下去,如果中途看不下去了,没事,略过看下一节,我们先把最表面的那一层看完,了解,再去深入到某个点。个人推荐重点阅读2、3、4、5、7、12、13这几章。
第三版预计2019年12月份出版,可以期待一下。
JAVA 虚拟机、Dalvik 虚拟机和 ART 虚拟机简要对比
Dalvik 和 ART 有什么区别?深扒 Android 虚拟机发展史,真相却出乎意料!
Android 系统从诞生到现在,经历了几次重要更新,最终选择了折衷的方案,使得系统的安装和运行的时候各项指标都得到了优化。别觉得 JIT 被弃用又被启动充满戏剧性,你看,Tinker 团队本来采用全量合成 dex 方案,为了解决 ART dex2oat过长又花了 1 个多月实现分虚拟机平台合成补丁,在 ART 上不再全量合成,后续又因为 ART 更为激进的内联优化引起了内存错乱,重新选择了全量 dex 方案,方案没有孰优孰劣,适合最重要,优化的道路从来不会停止。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 数据结构与算法
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论