JVM和JAVA体系结构关系概要总结

本博文中所讨论的JVM只是自己看书和教程的个人理解,不太严谨,严谨需要另找详细的资料,对细节把控很到位。

本博文环境:

System OS: Windows10 1909
JDK-Version: 1.8.0_202
JVM: Java HotSpot™ 64-Bit Server VM (build 25.202-b08, mixed mode)
IDE: IDEA2021.3

前言

jvm可以满足你,面试的需要,项目管理、调优的需求。加上如果你有一定的极客精神,大把的时间。想了解垃圾回收算法、JIT、底层原理,就可以学

一, JAVA和JVM简介

1.1 生态圈

Java是目前应用最为广泛的软件开发平台之一。作为一个平台,那么对于java中的虚拟机扮演着十分重要的地位。

换句话说,java可能会die,但是虚拟机可能不会。如果真的有一天java这门语言被淘汰了,有可能被运行在java虚拟机上的其他语言淘汰,但虚拟机不会。

  • Groovy, Scala,JRuby,Kotlin等都是java平台的一部分。
  • Java几乎成了开源的代名词,Spring,Apache基金会,JDK,JVM也有不少开源的。

1.2 Java跨平台性

在这里插入图片描述

1.3 java虚拟机

Java虚拟机是Java平台的基石。它是技术的组成部分,负责硬件和操作系统的独立性,编译代码的小巧大小以及保护用户免受恶意程序侵害的能力。

Java虚拟机是抽象的计算机。像真正的计算机一样,它具有指令集并在运行时操作各种内存区域。使用虚拟机实现编程语言是相当普遍的

1.4 JVM-跨语言的平台

在这里插入图片描述

  • 随着Java7的正式发布,Java虚拟机通过JSR-292规范实现在Java虚拟机平台运行非Java语言的编写程序
  • Java虚拟机根本不关心运行在其内部的程序到底是使用何种语言编写的,它只关心“字节码文件”

JAVA真正牛的,不是他语言本身有多牛,JVM是才是最牛逼的作品。有一天,java语言很可能被运行在虚拟机上的其他语言淘汰
在这里插入图片描述
Java虚拟机提供的语言无关性

1.5 字节码文件

对于我们平常所说的字节码文件,一般都是狭义的指的是JAVA语言编译而成的字节码。实际上,字节码文件准确的来说是任何能够在JVM平台上执行的格式一样的文件。不同的编译器,可以编译出相同的字节码文件,字节码文件也可以在不同的JVM上运行。

对于JVM和java语言没有必然联系,他只是与特定的二进制文件(class文件格式所关联),class文件中包含了JAVA虚拟机指令集和符号表等一些东西。

二. JVM的整体架构

在历史的长河中发展出了多种虚拟机,但是我们今天主要的还是使用HotSpot VM虚拟机。是目前市面上高性能虚虚拟机的代表,所以,默认的都是HotSpot虚拟机。HotSpot采用了解释器和即时编译器并存的架构,不吹牛逼的说,现在JAVA程序的运行性能早已经不是早期人们心中的刻板映象,已经达到了C/C++程序一教高下的地步。
JVM中的初步架构如图所示:
在这里插入图片描述

2.1 执行流程

在这里插入图片描述
架构模型:
Java编译器输入的指令流基本是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。
Hotspot VM 寄存器就是PC寄存器
由于跨平台性的设计,Java的指令都是根据栈设计的。不用平台CPU架构不同,所以不能设计为基于寄存器的。有点是跨平台,指令集小,编译器容器实现,缺点是性能降低(比寄存器),实现同样的功能需要更多的指令。

时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpot VM的宿主机环境已经不局限于平台

三,资料推荐

《深入理解JAVA虚拟机第3/4版》

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-1.html#jvms-1.2
https://docs.oracle.com/javase/specs/jvms/se8/html/index.html

参考博客:
https://www.cnblogs.com/niugang0920/p/12359016.html
https://www.jianshu.com/p/5947df0f3506

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值