我理解的Java虚拟机(JVM)

文章目录

  • 引言
    • Java虚拟机是个啥?
    • Java虚拟机干啥用的?
    • 怎么学Java虚拟机

我理解的Java虚拟机(JVM)

引言

看了周志明的《深入理解Java虚拟机》以及一些视频资料,准备自己写博客将看的以及理解的东西记录下来,毕竟很多东西偏理论,需要在理解的基础上记忆。写下来的目的是自己加深理解和方便随时查看,同时可以给正在啃Java虚拟机的同学提供一点素材或帮助。

这篇文章就谈谈什么是Java虚拟机,干啥用的,以及怎么学

Java虚拟机是个啥?

首先当然是百度百科一下,下面是百度百科的定义:

虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

看到这里,突然想起了Jave语言 “write once,run everywhere” 的口号哈哈,言归正传,那到底啥是Java虚拟机,在给出最终答案之前,先放一张图:
我理解的Java虚拟机(JVM)_第1张图片
看到最下面的一层的东西没有?简单总结一下就是:
Java虚拟机 + Java SE API子集 = JRE(Java runtime enviornment)
所以不知道你们是否产生了一个大胆的想法:装好JDK(JRE)是不是就有Java虚拟机了?
答案是YES, 它就藏在jdk安装目录下面,众里寻他千百度,他*的灯下黑啊
我理解的Java虚拟机(JVM)_第2张图片

好了,来总结一下自己理解的Java虚拟机是个啥:
它是个假想的计算机,Java代码能在里面跑起来,然后这个假想的计算机有windows版本的,也有Linux版本的等等,然后各种真实的计算机(PC机,服务器等)里面装一下JRE(也就包含了这个假想的计算机),Java代码就可以 “wirite once, run everywhere”了。
写到这里,想到了B乎的一个帖子,有个大神在游戏中自己从零打造一台可运行计算机,都**是牛人啊!这个感觉和Java虚拟机有神似之处,附上链接,有兴趣可以看看[https://zhuanlan.zhihu.com/p/66285061]

Java虚拟机干啥用的?

再回顾一下上面的图,Java虚拟机处于最底层,上面说提到Java虚拟机 + Java SE API子集 = JRE(Java runtime enviornment),也就是这台假想的计算机+JavaSE部分API构成了Java运行时环境。所以问Java虚拟机干啥用的?没这玩意,代码都跑不了,你说这玩意重要不?

怎么学Java虚拟机

既然这玩意很重要,那怎么学呢?他是一台假想的计算机,有自己的处理器、堆栈、寄存器等,还具有相应的指令系统。但是我连真实的计算机都没搞清白,更何况假想的计算机呢(笑哭)。基于我只是一只敲代码的菜鸟,弄清楚和我敲代码有关的部门就好了,后面的事,后面的再说。
我这里基本按照《深入理解Java虚拟机》的思路,按以下顺序开撸
1.自动内存管理,即内存怎么分配与回收
2.虚拟机执行子系统,类怎么加载与执行
暂时只准备撸这么多,后期有时间再加

好了,这篇就到这里,下篇正式开撸自动内存管理

你可能感兴趣的:(JVM,jvm)