Jvm虚拟机(一)-基础结构-图文总结

近期开始进行一些编程经典的书籍阅读,单看书很难理解,所以把一些相对重点东西梳理出来,以思维导图的形式来整理。我阅读的是《深入理解虚拟机》(第3版)。

Graal VM

开篇讲解了Java的历史,JDK的版本历程,还有虚拟机的演变史,当然这些都是耳闻能详的。在第三版提到了一个Graal VM比较有意思,他是2018年4月,Oracle Labs新公开了一项黑科技:Graal VM,如图1-4所示,从它的口号“Run Programs Faster Anywhere”就能感觉到一颗蓬勃的野心,这句话显然是与1995年Java刚诞生时的“Write Once,Run Anywhere”在遥相呼应。Graal VM被官方称为“Universal VM”和“Polyglot VM”,这是一个在HotSpot虚拟机基础上增强而成的跨语言全栈虚拟机,可以作为“任何语言”的运行平台使用,这里“任何语言”包括了Java、Scala、Groovy、Kotlin等基于Java虚拟机之上的语言,还包括了C、C++、Rust等基于LLVM的语言,同时支持其他像JavaScript、Ruby、Python和R语言等。
在这里插入图片描述
Oracle Labs的研究总监Thomas Wuerthinger在接受InfoQ采访时谈到:“随着GraalVM 1.0的发布,我们已经证明了拥有高性能的多语言虚拟机是可能的,并且实现这个目标的最佳方式不是通过类似Java虚拟机和微软
CLR那样带有语言特性的字节码。

HotSpot虚拟机中含有两个即时编译器,分别是编译耗时短但输出代码优化程度较低的客户端编译器(简称为C1)以及编译耗时长但输出代码优化质量也更高的服务端编译器(简称为C2),通常它们会在分层编译机制下与解释器互相配合来共同构成HotSpot虚拟机的执行子系统自JDK 10起,HotSpot中又加入了一个全新的即时编译器:Graal编译器,今天的Graal编译器尚且年幼,还未经过足够多的实践验证,所以仍然带着“实验状态”的标签,需要用开关参数去激活,使用-XX:+UnlockExperimentalVMOptions-XX:+UseJVMCICompiler参数来启用Graal编译器。
有兴趣的后续可以关注些这个VM。

Java虚拟机运行时数据区

这里的虚拟机通常是我们说的HotSpot虚拟机。
在这里插入图片描述
在这里插入图片描述

堆(Heap)

在这里插入图片描述

方法区(Method Area)

在这里插入图片描述

运行时常量池(Runtime Constant Pool)

在这里插入图片描述

class文件

在这里插入图片描述

虚拟机栈(VM Stack)

在这里插入图片描述
在这里插入图片描述

栈帧(Stack Frame)

在这里插入图片描述

本地方法栈(Native Method Stack)

在这里插入图片描述

程序计数器(Program Counter Register)

在这里插入图片描述

直接内存(Direct Memory)

在这里插入图片描述

总结

第一章部分直接简单的讲解了基础的虚拟机区域划分和基本内容,后续章节的阅读,也会详细的总结某一处区域知识点。又不对的地方请指出,目前书籍还在阅读中。

在这里插入图片描述
链接: https://pan.baidu.com/s/1v8Z3MLO11M1mn7w0GjFfJQ 密码: mt9e
xmind文件 需要的可以下载

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值