JVM学习笔记:基础概念

1. 什么是JVM

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
在这里插入图片描述

(1)一个A.java文件执行javac命令后编程成A.class文件

(2)class文件会被ClassLoader装载到内存中,同时装载java相关核心类库

(3)调用字节码解释器或即时编译器(java是解释器和编译器混合执行)

(4)执行引擎调用操作系统或硬件运行

2. JVM是跨语言的平台

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。
在这里插入图片描述

任何语言只要满足class文件结构规范就可以在JVM上运行。

3.常见的JVM

  • Hotspot
    oracle官方,目前使用的最多的 Java 虚拟机。
  • Jrocket
    原来属于BEA 公司,曾号称世界上最快的 JVM,后被 Oracle 公司收购,合并于 Hotspot。
  • J9
    IBM 有自己的 java 虚拟机实现,它的名字叫做 J9. 主要是用在 IBM 产品(IBM WebSphere 和 IBM 的 AIX 平台上)。
  • Microsoft VM
    微软Java虚拟机,为IE浏览器提供Java支持。
  • TaobaoVM
    只有一定体量、一定规模的厂商才会开发自己的虚拟机,比如淘宝有自己的 VM,它实际上是 Hotspot 的定制版,专门为淘宝准备的,阿里、天 猫都是用的这款虚拟机。
  • LiquidVM
    它是一个针对硬件的虚拟机,它下面是没有操作系统的(不是 Linux 也不是 windows),下面直接就是硬件,运行效率比较高。
  • zing
    它属于 zual 这家公司,非常牛,是一个商业产品,很贵!它的垃圾回收速度非常快(1 毫秒之内),是业界标杆。它的一个垃圾回收的算法后来被 Hotspot 吸收才有了现在的 ZGC。

4. 码农来洞见

对于JVM的学习,一般而言,我觉得还是掌握了Java语法之后,或者使用Java语言一段时间之后,再去学习JVM可能会更好一些。

我们可以通过模仿先学习招式,不要怕邯郸学步,东施效颦的笨拙;然后再通过反复刻意的训练,修练内功直至融会贯通。

学习路线推荐:

(1)先在网上查找资料了解JVM基础知识,比如class文件格式、字节码、类加载器等等。然后动手编写java文件生成class文件熟悉class文件结构和字节码(一般看16进制)。

(2)阅读电子书进入系统学习,推荐周志明的《 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) 》。

(3)去oracle官网阅读Java虚拟机规范。

(4)阅读OpenJDK源码,尝试动手编写简单的Java虚拟机。

一般开发人员完成前2个阶段就足够了。有兴趣的可以阅读官网虚拟机规范。最后一阶段据说阿里也就屈指可数的几位能写虚拟机。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农洞见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值