JVM 虚拟机介绍

发布于 2023-01-05 23:09:01 字数 2111 浏览 109 评论 0

如何学习 JVM?

JVM 的学习要反客为主,站在设计者的角度多去想想,为什么要这么划分?带来了什么好处?才能做到学以致用。

  • 比如,内存区域为什么这么划分?线程私有和共享怎么理解?
  • 比如,垃圾收集这么多算法和实现,适合什么场景?
  • 比如,在发生内存溢出或者性能相关问题时,我应该 dump 内存去关注哪部分?是大对象太多占据了老年代?还是因为太多朝生夕死的对象占据了新生代?是直接内存引起的溢出吗?有什么解决措施吗?
  • 类加载为什么要用双亲委派模型,是出于什么考虑呢?

一切的答案,尽在下面的资料中:

摆脱枯燥的文字,一起动起来?

Android原理动画

用动画的形式呈现JVM内存结构、GC、DVM、ART的区别,让你印象更深刻。

视频:【java】jvm内存模型全面解析

视频:【java】10分钟,了解GC过程

视频:【java】垃圾收集器|g1收集器

考虑到视频学习的方式比较低效,所以我很少把视频类的列入图谱库,但是在 易懂和直观 方面,视频又有着无可比拟的优越性,所以我列在这里,帮助你先快速入门。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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

少女情怀诗

暂无简介

文章
评论
489 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文